最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python八皇后問題解答過程詳解

 更新時(shí)間:2019年07月29日 09:30:33   作者:seven_clear  
這篇文章主要介紹了Python講解八皇后問題過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

最近看Python看得都不用tab鍵了,哈哈。今天看了一個(gè)經(jīng)典問題--八皇后問題,說實(shí)話,以前學(xué)C、C++的時(shí)候有這個(gè)問題,但是當(dāng)時(shí)不愛學(xué),沒搞會(huì),后來算法課上又碰到,只是學(xué)會(huì)了思想,應(yīng)該是學(xué)回溯法的時(shí)候碰到的。八皇后問題是說要在一個(gè)棋盤上放置8個(gè)皇后,但是不能發(fā)生戰(zhàn)爭,皇后們都小心眼,都愛爭風(fēng)吃醋,如果有人和自己在一條線上(水平、垂直、對角線)就會(huì)引發(fā)撕13大戰(zhàn),所以我們就是要妥當(dāng)?shù)陌才?位娘娘,以保后宮太平。

言歸正傳,首先,我們得想好解決方案怎么表示,這種事首先想到列表,當(dāng)然規(guī)模小的話用元組最好啦,列表都比較熟悉,這次試試元組。每個(gè)元組元素指定相應(yīng)行皇后位置,如state[0] = 3表示第一行皇后在第4列。然后還要知道什么情況不行,就是說找到矛盾,我們定義一個(gè)函數(shù):

def conflict(state,nextx):
 '定義沖突函數(shù),state為元組,nextx為下一個(gè)皇后的水平位置,nexty為下一個(gè)皇后的垂直位置'
 nexty = len(state)
 for i in range(nexty):
  if abs(state[i]-nextx) in (0,nexty-i):#若下一個(gè)皇后和前面的皇后列相同或者在一條對角線上,則沖突
   return True
 return False

最后,我們要解決娘娘們的位置了,先找到一個(gè)不沖突的位置,如果這位娘娘是最后一位,那么我們就把娘娘們安排好了,返回該位置到解決方案;如果不是最后一位,也把該位置信息返回到狀態(tài)元組(最后的解決方案是含全部位置信息的狀態(tài)元組)并傳給后面的皇后,看代碼:

def queens(num=8,state=()):
 '八皇后問題,這里num表示規(guī)模'
 for pos in range(num):
  if not conflict(state,pos):#位置不沖突
   if len(state) == num - 1:#若是最后一個(gè)皇后,則返回該位置
    yield (pos,)
   else:#若不是最后一個(gè)皇后,則將該位置返回到state元組并傳給后面的皇后
    for result in queens(num,state + (pos,)):
     yield (pos,) + result

哦,最后的最后,我們還得看看解決方案什么樣,定義一個(gè)打印函數(shù):

def prettyp(solution):
 '打印函數(shù)'
 def line(pos,length = len(solution)):
  '打印一行,皇后位置用X填充,其余用0填充'
  return 'O'*(pos)+'X'+'O'*(length-pos-1)
 for pos in solution:
  print(line(pos))

讓我們看看效果:

import random
#隨機(jī)打印一種
prettyp(random.choice(list(queens(8))))

D:\Python34\python.exe D:/Python34/hanshu.py
OOOOOOOX
OOXOOOOO
XOOOOOOO
OOOOOXOO
OXOOOOOO
OOOOXOOO
OOOOOOXO
OOOXOOOO
Process finished with exit code 0

完美達(dá)到預(yù)期,pass,哈哈。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 深入理解Javascript中的this關(guān)鍵字

    深入理解Javascript中的this關(guān)鍵字

    這篇文章主要介紹了深入理解Javascript中的this關(guān)鍵字,本文講解了方法調(diào)用模式、函數(shù)調(diào)用模式、構(gòu)造器調(diào)用模式、apply調(diào)用模式 中this的不同之處,需要的朋友可以參考下
    2015-03-03
  • python內(nèi)置函數(shù)delattr()與dict()舉例詳解

    python內(nèi)置函數(shù)delattr()與dict()舉例詳解

    這篇文章主要介紹了關(guān)于python內(nèi)置函數(shù)delattr()與dict()的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • python神經(jīng)網(wǎng)絡(luò)使用tensorflow構(gòu)建長短時(shí)記憶LSTM

    python神經(jīng)網(wǎng)絡(luò)使用tensorflow構(gòu)建長短時(shí)記憶LSTM

    這篇文章主要為大家介紹了python機(jī)器學(xué)習(xí)tensorflow構(gòu)建長短時(shí)記憶網(wǎng)絡(luò)LSTM,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • python中的不可變數(shù)據(jù)類型與可變數(shù)據(jù)類型詳解

    python中的不可變數(shù)據(jù)類型與可變數(shù)據(jù)類型詳解

    探尋python的數(shù)據(jù)類型是否可變,也可以更好的理解python對內(nèi)存的使用情況,下面這篇文章主要給大家介紹了關(guān)于python中不可變數(shù)據(jù)類型與可變數(shù)據(jù)類型的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2018-09-09
  • 基于Python開發(fā)Excel字符截取工具

    基于Python開發(fā)Excel字符截取工具

    這篇文章主要為大家詳細(xì)介紹了如何使用PyQt5和Pandas開發(fā)一個(gè)Excel字符截取工具,可以用簡便的方式對Excel表格中的文本進(jìn)行截取處理,需要的可以了解下
    2025-03-03
  • 一文帶你探索Python生成器的深度用法

    一文帶你探索Python生成器的深度用法

    生成器是Python的一種核心特性,允許我們在請求新元素時(shí)再生成這些元素,而不是在開始時(shí)就生成所有元素,本文我們將從理論和實(shí)踐兩方面來探索Python生成器的深度用法,感興趣的可以了解一下
    2023-06-06
  • 詳解解Django 多對多表關(guān)系的三種創(chuàng)建方式

    詳解解Django 多對多表關(guān)系的三種創(chuàng)建方式

    本文主要介紹了詳解解Django 多對多表關(guān)系的三種創(chuàng)建方式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-08-08
  • python實(shí)現(xiàn)文件批量重命名

    python實(shí)現(xiàn)文件批量重命名

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)文件批量重命名,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • Python計(jì)算時(shí)間間隔(精確到微妙)的代碼實(shí)例

    Python計(jì)算時(shí)間間隔(精確到微妙)的代碼實(shí)例

    今天小編就為大家分享一篇關(guān)于Python計(jì)算時(shí)間間隔(精確到微妙)的代碼實(shí)例,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-02-02
  • PyQt5通信機(jī)制 信號與槽詳解

    PyQt5通信機(jī)制 信號與槽詳解

    這篇文章主要介紹了PyQt5通信機(jī)制 信號與槽詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08

最新評論

北流市| 梁平县| 中方县| 溧阳市| 韶关市| 来宾市| 墨竹工卡县| 广河县| 长海县| 朝阳县| 蒲城县| 商洛市| 茂名市| 象州县| 密云县| 万山特区| 广河县| 济宁市| 大丰市| 乌什县| 海南省| 达日县| 焦作市| 衡南县| 和龙市| 洪湖市| 广安市| 衡水市| 开封市| 香港| 赤峰市| 许昌市| 会同县| 工布江达县| 新巴尔虎右旗| 察哈| 张北县| 双江| 光泽县| 鄂托克旗| 满洲里市|