真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網站制作重慶分公司

Python判斷有效數獨算法的示例-創(chuàng)新互聯(lián)

這篇文章給大家分享的是有關Python判斷有效數獨算法的示例的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

10余年品牌的成都網站建設公司,上千家企業(yè)網站設計經驗.價格合理,可準確把握網頁設計訴求.提供定制網站建設、成都做商城網站、微信平臺小程序開發(fā)、成都響應式網站建設等服務,我們設計的作品屢獲殊榮,是您值得信賴的專業(yè)網站制作公司。

一、題目

判斷一個 9x9 的數獨是否有效。只需要根據以下規(guī)則,驗證已經填入的數字是否有效即可。

1. 數字 1-9 在每一行只能出現(xiàn)一次。
2. 數字 1-9 在每一列只能出現(xiàn)一次。
3. 數字 1-9 在每一個以粗實線分隔的 3x3 宮內只能出現(xiàn)一次。

數獨部分空格內已填入了數字,空白格用 ‘.' 表示。

例1:

輸入:
[
["5","3",".",".","7",".",".",".","."],
["6",".",".","1","9","5",".",".","."],
[".","9","8",".",".",".",".","6","."],
["8",".",".",".","6",".",".",".","3"],
["4",".",".","8",".","3",".",".","1"],
["7",".",".",".","2",".",".",".","6"],
[".","6",".",".",".",".","2","8","."],
[".",".",".","4","1","9",".",".","5"],
[".",".",".",".","8",".",".","7","9"]
]
輸出: true

例2:

輸入:
[
["8","3",".",".","7",".",".",".","."],
["6",".",".","1","9","5",".",".","."],
[".","9","8",".",".",".",".","6","."],
["8",".",".",".","6",".",".",".","3"],
["4",".",".","8",".","3",".",".","1"],
["7",".",".",".","2",".",".",".","6"],
[".","6",".",".",".",".","2","8","."],
[".",".",".","4","1","9",".",".","5"],
[".",".",".",".","8",".",".","7","9"]
]
輸出: false

解釋: 除了第一行的第一個數字從 5 改為 8 以外,空格內其他數字均與 示例1 相同。

但由于位于左上角的 3x3 宮內有兩個 8 存在, 因此這個數獨是無效的。

二、解法

  • 先創(chuàng)建三個空數組 row、col、cell,以 cell 為例,里面的每個空字典都代表一個 3×3單元格,然后我們需要把數據一個個填進去

  • 遍歷整個二維數組,然后邊遍歷邊把數組分別存入到 行 row , 列 col , 3×3單元格 cell 內的字典,存為key ,而不是 value 。

  • 然后我們就可以判斷,行、列、3×3單元格 對應的字典內是否已經存在board[x][y]這個鍵名,如果存在,那么說明重復了,返回 False

  • 注意,字典中的值這里都為1,但是沒有任何意義,你可以隨意更改

  • 把數組存入 3×3的單元格是一個難點,num = 3*(x//3)+y//3,這個式子是關鍵,可以找個數獨,然后代入進去好好理解下

  • 當然你也可以不用這個式子,用if/else語句來判斷也行,那樣比較好理解,但是不如這個式子簡潔

  • 類似于: if y<3 : ... elif 3<=y<6 : ... elif 6<=y : ...,

代碼如下:

#row,col,cell分別代表行,列,3x3單元格
row, col, cell =
[{}, {}, {}, {}, {}, {}, {}, {}, {}],
[{}, {}, {}, {}, {}, {}, {}, {}, {}],
[{}, {}, {}, {}, {}, {}, {}, {}, {}]
for x in range(9):
  for y in range(9):
    #取得單元格
    num = 3*(x//3)+y//3
    temp = board[x][y]
    #不需要存入 '.'
    if temp != '.':
      if (temp not in row[x]
      and temp not in col[y]
      and temp not in cell[num]):
        row[x][temp] = '1'
        col[y][temp] = '1'
        cell[num][temp] = '1'
      else:
        return False
return True

時間 64ms,擊敗了 99.3%

感謝各位的閱讀!關于“Python判斷有效數獨算法的示例”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!


當前文章:Python判斷有效數獨算法的示例-創(chuàng)新互聯(lián)
鏈接地址:http://weahome.cn/article/ehoci.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部