欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python判斷有效的數(shù)獨算法示例

 更新時間:2019年02月23日 11:40:17   作者:linfeng886  
這篇文章主要介紹了Python判斷有效的數(shù)獨算法,結(jié)合實例形式分析了Python針對數(shù)獨有效性判定的相關(guān)操作技巧,需要的朋友可以參考下

本文實例講述了Python判斷有效的數(shù)獨算法。分享給大家供大家參考,具體如下:

一、題目

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

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

數(shù)獨部分空格內(nèi)已填入了數(shù)字,空白格用 ‘.' 表示。

例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

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

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

二、解法

  • 先創(chuàng)建三個空數(shù)組 row、col、cell,以 cell 為例,里面的每個空字典都代表一個 3×3單元格,然后我們需要把數(shù)據(jù)一個個填進(jìn)去
  • 遍歷整個二維數(shù)組,然后邊遍歷邊把數(shù)組分別存入到 行 row , 列 col , 3×3單元格 cell 內(nèi)的字典,存為key ,而不是 value 。
  • 然后我們就可以判斷,行、列、3×3單元格 對應(yīng)的字典內(nèi)是否已經(jīng)存在board[x][y]這個鍵名,如果存在,那么說明重復(fù)了,返回 False
  • 注意,字典中的值這里都為1,但是沒有任何意義,你可以隨意更改
  • 把數(shù)組存入 3×3的單元格是一個難點,num = 3*(x//3)+y//3,這個式子是關(guān)鍵,可以找個數(shù)獨,然后代入進(jìn)去好好理解下
  • 當(dāng)然你也可以不用這個式子,用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%

更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python數(shù)組操作技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python列表(list)操作技巧總結(jié)》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》及《Python入門與進(jìn)階經(jīng)典教程

希望本文所述對大家Python程序設(shè)計有所幫助。

相關(guān)文章

  • Django打印出在數(shù)據(jù)庫中執(zhí)行的語句問題

    Django打印出在數(shù)據(jù)庫中執(zhí)行的語句問題

    這篇文章主要介紹了Django打印出在數(shù)據(jù)庫中執(zhí)行的語句,文中給大家提到了Django 查看執(zhí)行的sql語句方法,代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-07-07
  • 基于python分享一款地理數(shù)據(jù)可視化神器keplergl

    基于python分享一款地理數(shù)據(jù)可視化神器keplergl

    這篇文章主要介紹了分享一款地理數(shù)據(jù)可視化神器keplergl,keplergl是由Uber開源的一款地理數(shù)據(jù)可視化工具,通過keplergl我們可以在Jupyter?notebook中使用,下文分享需要的小伙伴可以參考一下
    2022-02-02
  • Python?httpstat命令行工具功能使用探索

    Python?httpstat命令行工具功能使用探索

    Python?httpstat是一個強大的命令行工具,用于深入了解HTTP請求的性能和狀態(tài)信息,本文將介紹Python?httpstat的基本用法、功能特性、示例代碼以及實際應(yīng)用場景,幫助大家更好地理解和利用這個有用的工具
    2024-01-01
  • Python在畫圖時使用特殊符號的方法總結(jié)

    Python在畫圖時使用特殊符號的方法總結(jié)

    在制作圖表時,如果遇到需要利用特殊符號進(jìn)行表示時該怎么辦呢?不用慌,這篇文章為大家總結(jié)了python畫圖中使用各種特殊符號的方式,需要的可以參考一下
    2022-04-04
  • Python?time模塊時間獲取和轉(zhuǎn)換方法

    Python?time模塊時間獲取和轉(zhuǎn)換方法

    這篇文章主要介紹了Python?time模塊時間獲取和轉(zhuǎn)換,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-05-05
  • python二叉樹常用算法總結(jié)

    python二叉樹常用算法總結(jié)

    這篇文章主要分享的是python二叉樹常用算法,二叉樹的遞歸思想很重要,還有遞歸的復(fù)雜度分析,需下面文章就來詳細(xì)解說該算法,要的朋友可以參考一下
    2021-09-09
  • jupyter關(guān)于pandas的dataframe行列顯示不全與復(fù)原問題

    jupyter關(guān)于pandas的dataframe行列顯示不全與復(fù)原問題

    這篇文章主要介紹了jupyter關(guān)于pandas的dataframe行列顯示不全與復(fù)原問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • Python標(biāo)準(zhǔn)庫urllib2的一些使用細(xì)節(jié)總結(jié)

    Python標(biāo)準(zhǔn)庫urllib2的一些使用細(xì)節(jié)總結(jié)

    這篇文章主要介紹了Python標(biāo)準(zhǔn)庫urllib2的一些使用細(xì)節(jié)總結(jié),本文總結(jié)了Proxy 的設(shè)置、Timeout 設(shè)置、Redirect、Cookie等細(xì)節(jié)的使用,需要的朋友可以參考下
    2015-03-03
  • python中幾種自動微分庫解析

    python中幾種自動微分庫解析

    這篇文章主要介紹了python中幾種自動微分庫解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-08-08
  • python3利用smtplib通過qq郵箱發(fā)送郵件方法示例

    python3利用smtplib通過qq郵箱發(fā)送郵件方法示例

    python實現(xiàn)郵件發(fā)送較為簡單,主要用到smtplib這個模塊,所以下面這篇文章主要給大家介紹了關(guān)于python3利用smtplib通過qq郵箱發(fā)送郵件的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起看看吧。
    2017-12-12

最新評論