homework one

思考1、(窮舉方法)為了滿足規(guī)則要求,采用遞歸回溯的方法寫入每個(gè)位置的數(shù)字戒良。也就是說,先寫入一個(gè)數(shù)字冠摄,然后在這一行這一列進(jìn)行查詢對(duì)比糯崎,如果存在相等的數(shù)字就退回到初始位置從1~9中重新選取一個(gè)數(shù)字寫入,繼續(xù)進(jìn)行對(duì)比回溯重復(fù)河泳,直到全部寫入相應(yīng)位置沃呢。這樣做的顯著缺點(diǎn)就是需要大量的回溯步驟和重新寫入,導(dǎo)致時(shí)間復(fù)雜度高拆挥。

思考2薄霜、依據(jù)數(shù)獨(dú)表格的分布狀況可以看出,每一行纸兔,每一列惰瓜,每一個(gè)九個(gè)粗線宮格內(nèi)的九個(gè)小格有且僅有出現(xiàn)1~9數(shù)字中的一個(gè)。所以汉矿,在第一行的1~3列小格寫入數(shù)字x(為1~9中的任一個(gè))崎坊,在第二行的4~6列小格同樣寫入數(shù)字x,同樣的洲拇,在第三行的7~9列小格也寫入x奈揍。然后重復(fù)上述操作,寫入另一個(gè)數(shù)y赋续。同樣在4~6行同樣進(jìn)行這樣的操作男翰。這樣寫入的方法可以避免回溯次數(shù)。

補(bǔ)充思考1纽乱、將數(shù)獨(dú)游戲構(gòu)成抽象成“樹”數(shù)據(jù)結(jié)構(gòu)類型蛾绎。將數(shù)獨(dú)的中心線當(dāng)做每一組四杈樹的跟節(jié)點(diǎn),并風(fēng)別將四杈樹迫淹,分成兩組進(jìn)行便利對(duì)比秘通,判斷節(jié)點(diǎn)的值不讓其相同为严,若是相同則修改其值再次進(jìn)行節(jié)點(diǎn)便利比較敛熬。缺點(diǎn)很明顯不僅要在大的九宮格上進(jìn)行樹遍歷比較,還要求在小九宮格中進(jìn)行遍歷比較第股,并且還不一定能夠成功找出正確給出解应民。

補(bǔ)充思考2、將數(shù)獨(dú)類比于求最優(yōu)解的的問題,根據(jù)規(guī)則要求不管如何每一行诲锹,每一列繁仁,每一個(gè)粗框九宮格必定都要滿足1~9這些分別且全部存在。采用深度優(yōu)先遍歷的算法能夠很好的避免過多的回溯归园。甚至有些數(shù)據(jù)不需要回溯黄虱。

### 代碼分析

-確定代碼的IPO模式:

-輸入為需要補(bǔ)充完整的部分?jǐn)?shù)獨(dú)

-輸出為完整的數(shù)獨(dú)組成

1.輸入:已存在數(shù)據(jù)的按照原數(shù)據(jù)輸入,不存在的數(shù)據(jù)以數(shù)字0表示庸诱。直接讀取文件夾完成數(shù)據(jù)輸入捻浦。

2.同時(shí)將數(shù)獨(dú)表示列表的形式,使得用來查找的索引對(duì)應(yīng)每一行每一列桥爽。

3.采用深度優(yōu)先遍歷的方法進(jìn)行數(shù)據(jù)結(jié)構(gòu)造朱灿。創(chuàng)建數(shù)獨(dú)類 soduku ( Object ),定義方法 Check ()用來判斷每一行每一列每一個(gè)粗線框九宮格是否存在相同項(xiàng)钠四。定義方法 Getnext() 用來獲取下一項(xiàng)盗扒。定義主循環(huán) SudokuTry()

4.輸出:預(yù)測能夠輸出一個(gè)完整的數(shù)獨(dú)

SudokuTry()//主循環(huán)

if self.b[x][y] == 0:

for i in range(1,10):#從1到9嘗試

self.t+=1

if self.check(x,y,i):#符合 行列宮均無條件 的

self.b[x][y]=i #將符合條件的填入0格

next_x,next_y=self.get_next(x,y)#得到下一個(gè)0格

if next_x == -1: #如果無下一個(gè)0格

return True??#返回True

else:????????#如果有下一個(gè)0格,遞歸判斷下一個(gè)0格直到填滿數(shù)獨(dú)

end=self.try_it(next_x,next_y)

if not end:???#在遞歸過程中存在不符合條件的缀去,即 使try_it函數(shù)返回None的項(xiàng)

self.b[x][y] = 0????#回朔到上一層繼續(xù)

else:

return True

測試數(shù)據(jù):

0 0 0 0 0 0 0 0 9

9 0 0 0 0 0 0 7 0

0 7 0 0 9 0 2 0 0

0 5 0 0 0 7 0 0 0

3 0 0 0 4 5 7 0 0

0 8 0 0 0 0 0 3 0

0 0 1 0 0 0 0 6 8

0 0 8 5 0 0 0 1 0

7 0 0 0 1 0 0 0 2

1 4 2 7 5 3 6 8 9

9 6 5 2 8 4 1 7 3

8 7 3 1 9 6 2 5 4

2 5 4 6 3 7 8 9 1

3 1 9 8 4 5 7 2 6

6 8 7 9 2 1 4 3 5

5 3 1 4 7 2 9 6 8

4 2 8 5 6 9 3 1 7

7 9 6 3 1 8 5 4 2

use Time: 0.793530 s

輸入:

sudoku=[

0,0,7,0,0,0,8,2,0,

0,9,0,0,0,1,0,0,0,

0,4,0,9,7,0,0,0,0,

0,0,0,0,0,5,4,0,6,

0,0,3,0,0,0,7,0,0,

5,0,6,7,0,0,0,0,0,

0,0,0,0,8,4,0,5,0,

0,0,0,6,0,0,0,1,0,

0,2,4,0,0,0,6,0,0,

]

預(yù)測輸出:

1 5 7 4 3 6 8 2 9

6 9 8 5 2 1 3 4 7

3 4 2 9 7 8 5 6 1

2 7 9 3 1 5 4 8 6

4 1 3 8 6 2 7 9 5

5 8 6 7 4 9 1 3 2

7 6 1 2 8 4 9 5 3

8 3 5 6 9 7 2 1 4

9 2 4 1 5 3 6 7 8

實(shí)際輸出

1 5 7 4 3 6 8 2 9

6 9 8 5 2 1 3 4 7

3 4 2 9 7 8 5 6 1

2 7 9 3 1 5 4 8 6

4 1 3 8 6 2 7 9 5

5 8 6 7 4 9 1 3 2

7 6 1 2 8 4 9 5 3

8 3 5 6 9 7 2 1 4

9 2 4 1 5 3 6 7 8

use Time: 0.876582 s

python 3.6

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末侣灶,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子朵耕,更是在濱河造成了極大的恐慌炫隶,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,406評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件阎曹,死亡現(xiàn)場離奇詭異伪阶,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)处嫌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門栅贴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人熏迹,你說我怎么就攤上這事檐薯。” “怎么了注暗?”我有些...
    開封第一講書人閱讀 163,711評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵坛缕,是天一觀的道長。 經(jīng)常有香客問我捆昏,道長赚楚,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,380評(píng)論 1 293
  • 正文 為了忘掉前任骗卜,我火速辦了婚禮宠页,結(jié)果婚禮上左胞,老公的妹妹穿的比我還像新娘。我一直安慰自己举户,他們只是感情好烤宙,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著俭嘁,像睡著了一般躺枕。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上供填,一...
    開封第一講書人閱讀 51,301評(píng)論 1 301
  • 那天屯远,我揣著相機(jī)與錄音,去河邊找鬼捕虽。 笑死慨丐,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的泄私。 我是一名探鬼主播房揭,決...
    沈念sama閱讀 40,145評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼晌端!你這毒婦竟也來了捅暴?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,008評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤咧纠,失蹤者是張志新(化名)和其女友劉穎蓬痒,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體漆羔,經(jīng)...
    沈念sama閱讀 45,443評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡梧奢,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了演痒。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片亲轨。...
    茶點(diǎn)故事閱讀 39,795評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖鸟顺,靈堂內(nèi)的尸體忽然破棺而出惦蚊,到底是詐尸還是另有隱情,我是刑警寧澤讯嫂,帶...
    沈念sama閱讀 35,501評(píng)論 5 345
  • 正文 年R本政府宣布蹦锋,位于F島的核電站,受9級(jí)特大地震影響欧芽,放射性物質(zhì)發(fā)生泄漏莉掂。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評(píng)論 3 328
  • 文/蒙蒙 一渐裸、第九天 我趴在偏房一處隱蔽的房頂上張望巫湘。 院中可真熱鬧,春花似錦昏鹃、人聲如沸尚氛。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽阅嘶。三九已至,卻和暖如春载迄,著一層夾襖步出監(jiān)牢的瞬間讯柔,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評(píng)論 1 269
  • 我被黑心中介騙來泰國打工护昧, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留魂迄,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,899評(píng)論 2 370
  • 正文 我出身青樓惋耙,卻偏偏與公主長得像捣炬,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子绽榛,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 世界上有五種元素湿酸,圍繞這五種元素人們做出了很多產(chǎn)物,也建立了元素科學(xué)體系灭美。 在一場科學(xué)研究討論會(huì)上推溃,一個(gè)人公開了他...
    第九個(gè)宇宙閱讀 192評(píng)論 0 0
  • 明天,我的新室友就要到了届腐。 她是目前為止铁坎,在我心中在我現(xiàn)階段的生活里溝通最頻繁也是最能交心的朋友。 她來了犁苏,我至少...
    燦々閱讀 480評(píng)論 2 2
  • 前陣子曾看到一篇文章傀顾,作者在文中闡述了PM為了促活或其它目的而在產(chǎn)品中加入積分機(jī)制襟铭,然而最終結(jié)果往往是對(duì)于產(chǎn)品沒什...
    魚翅粉絲閱讀 902評(píng)論 11 11
  • Never too late to change. 不要因?yàn)楹ε氯哿丝赡軙?huì)受傷害就不去改變單身的現(xiàn)狀。也許短曾,愛能...
    Bonnie徐閱讀 367評(píng)論 0 0