日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python deepcopy函数_用Python解数独[6]:递归获得最终答案

發布時間:2024/9/19 python 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python deepcopy函数_用Python解数独[6]:递归获得最终答案 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

  • 用Python解數獨[0]
  • 用Python解數獨[1]:求每個單元格的行值域
  • 用Python解數獨[2]:求列值域和九宮格值域
  • 用Python解數獨[3]:求總值域
  • 用Python解數獨[4]:縮減值域
  • 用Python解數獨[5]:檢測唯一值縮減值域
  • 用Python解數獨[6]:遞歸獲得最終答案
  • 用Python解數獨[7]:遞歸(完結篇)

  • [2][1] 解決數獨問題基本思路

    7、遞歸獲得最終答案

    上一回我們對于值域列表縮減函數進行了改造,增加了檢測唯一值的方法,但最終我們依然沒有得到答案,還有很多單元格的答案沒有確定,應該怎么辦呢?

    在當前這種情況下,我們已經無法從數獨中直接確定某個單元格的答案了,但是我們可以用試驗的辦法,去驗證某個單元格的答案是值域里的哪一個值。我們以第7行第7列單元格為例,我們假設它的值是1,則這個變化會引起一系列的變化,最終我們得到這個:

    在第二個九宮格出現了2個7,因此我們可以判斷第7行第7列的值不是1,而應該是6。我們通過這種測試驗證的方法獲得了某個單元格的答案。我們現在需要用代碼來實現:

    # 主函數,輸入值域列表,如遇到多個取值的單元格,依次嘗試值域里的每個值,通過遞歸的方法檢測值是否正確

    這段代碼其實還是挺復雜的,容我細細解讀:

    # 主函數,輸入值域列表,如遇到多個取值的單元格,依次嘗試值域里的每個值,通過遞歸的方法檢測值是否正確
    • 我們設置i和j兩個循環,是為了遍歷total_value_range里的每一個元素
    • 當len(total_value_range[i][j]) = 1時,也就是說這個單元格是已知單元格,取值已經確定了;如果len(total_value_range[i][j]) > 1,這個單元格是未知單元格,值域列表有多個取值;
    • 對于未知單元格,我們遍歷它的值域,同時拷貝一份total_value_range,并把值域里的值賦給test_value[i][j],開始進行“試驗”,看test_value[i][j]里的哪一個值是正確的;
    # 檢查行值域列表是否合法
    • 賦值之后,我們立即使用之前的generator_soduku()和reduce_totalValueRange()方法,基于已有條件生成一個最新的值域列表;
    • 然后我們需要做的是,用soduku_checkRepeat()方法檢驗當前的值域列表是否合法,soduku_checkRepeat()方法的原理也很簡單:
      • 首先我們寫出一個檢查行值域列表是否合法的函數:將一行已知單元格都選出放到一個列表里,檢查列表是否有重復值;
      • 有了行值域檢查函數,只需將數獨進行行列轉換和九宮格轉換然后分別進行檢測,如果三項檢測均為True,則最后返回True,有一項False,最后返回False
    • 如果soduku_checkRepeat()顯示當前值域列表合法,則使用sodukuRate()方法檢測當前值域列表每個單元格是否都是已知單元格(各單元格值域長度均為1)
      • 若每個單元格值域長度均為1,則說明已經得到最終正確答案,則返回test_value,即最終正確答案;
      • 若sodukuRate(test_value)不為1,則說明經過一番操作后還未得到正確答案,或者得到錯誤答案,因此我們將當前的值域列表test_value作為參數,用if判斷trial(test_value),這個就用上了遞歸的概念,我們稍后詳細解釋;
    • 如果soduku_checkRepeat()顯示當前值域列表不合法,則說明total_value_range[i][j]當前的取值k不正確,我們continue,繼續循環;
    • 如果for k in total_value_range[i][j],這個循環結束了,說明所有的取值k都是導向錯誤的結果(在第一層trial()是不會出現的,會出現在第二層trial()時),則返回False;

    最終運行代碼,得到了結果

    PS

    把全部源碼展示出來:

    import

    下一期我們將詳細解釋這個利用了遞歸的函數,具體是如何運行的,我們這個用Python解數獨欄目也將迎來尾聲。


    下一篇鏈接:用Python解數獨[7]:遞歸(完結篇)

    總結

    以上是生活随笔為你收集整理的python deepcopy函数_用Python解数独[6]:递归获得最终答案的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 亚洲欧美国产另类 | 欧美一级乱黄 | 天天色天天搞 | 91日韩欧美 | 91黄色免费| 国产男女猛烈无遮挡免费观看网站 | 欧美经典一区二区 | 欧美蜜臀 | 动漫美女靠逼 | 艹男人的日日夜夜 | 日韩爽片 | 亚洲精品粉嫩小泬 | 91在线视频免费 | 亚洲国产成人一区 | 丁香五色月 | 色综合图片 | 风间由美av | www.色人阁.com| 色人阁网站| www.黄色一片| 91久久网 | 涩涩网站在线看 | 操日韩 | 日韩美女视频 | 人人澡澡人人 | 尤物在线视频 | 国产黄色av | 91视频久久 | 日本欧美一级 | 91国产免费视频 | 欧美激情三级 | 婷婷射丁香 | 午夜片在线 | 日韩一级色 | 天天插天天狠天天透 | 风流还珠之乱淫h文 | 97夜夜 | 中文av免费 | 成人免费高清 | 亚洲精品aa | 久在线观看视频 | 国产一级视频在线观看 | 国产精品久久无码一三区 | 亚洲欧美系列 | 91porn九色| 成人亚洲网 | 欧美456 | 蜜臀av在线免费观看 | 进去里在线观看 | 黑丝一区 | 免费黄色国产 | 浪潮av色 | 男生插女生视频在线观看 | 久久一精品 | 中文字幕av在线播放 | 欧美日韩一区不卡 | 日韩欧美一区二区在线 | 成人久久免费视频 | 另类第一页 | 一本视频在线 | 女人脱了内裤趴开腿让男躁 | 我的好妈妈在线观看 | 涩涩小网站 | 色图网址 | 国产精品区二区三区日本 | 2018中文字幕在线观看 | 国产一区二区自拍 | 非洲一级黄色片 | 免费一区二区三区视频在线 | 无码国产精品一区二区免费16 | 日韩欧美一区二区三区免费观看 | 美女的胸给男人玩视频 | 插插宗合网 | 丰满人妻一区二区三区性色 | 久久免费视频网站 | 操操操日日日 | 久久wwww| 国产伊人精品 | 思思久久精品 | 天天干天天弄 | 免费不卡的av | 无码人妻精品一区二区三区99日韩 | 深爱婷婷 | 老司机激情影院 | 99久久精品日本一区二区免费 | 亚洲人成色777777精品音频 | 亚洲五级片 | 色图自拍偷拍 | 视频日韩| 丰满大爆乳波霸奶 | 黄色天堂网站 | 日韩丝袜一区 | 朝桐光av一区二区三区 | 欧美色xxxxx 日本精品一区二区三区四区的功能 | 一区二区三区麻豆 | 丰满人妻一区二区三区53 | 亚洲图片激情小说 | 乳罩脱了喂男人吃奶视频 | 色诱久久av |