leetcode 037. 解數(shù)獨

編寫一個程序粹排,通過已填充的空格來解決數(shù)獨問題。

一個數(shù)獨的解法需遵循如下規(guī)則

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

空白格用 '.' 表示。

1.png

一個數(shù)獨蚊丐。
2.png

答案被標(biāo)成紅色熙参。

class Solution:
    def solveSudoku(self, board):
        # 由于leetcode題目要求無返回值,所以判斷函數(shù)用dfs麦备,這里來調(diào)用
        self.dfs(board)

    def dfs(self, board):
        # 從頭循環(huán)來判斷每個格子里填什么數(shù)字
        for x in range(9):
            for y in range(9):
                if board[x][y] == '.':
                    for nbr in '123456789':
                        board[x][y] = nbr
                        # 如果檢測有效且繼續(xù)向后判斷有效返回True,如果False繼續(xù)用其它數(shù)字循環(huán)
                        if self.is_valid(board, x, y) and self.dfs(board):
                            return True
                    # 如果沒有找到有效的數(shù)字恢復(fù)值為"."孽椰,說明數(shù)字有問題返回False
                    board[x][y] = '.'
                    return False
        # 所有的"."都填完,返回True
        return True

    def is_valid(self, board, x, y):
        # 判斷每行是重復(fù)凛篙,不含自身
        for col in range(9):
            if board[x][y] == board[x][col] and col != y:
                return False
        # 判斷每列是重復(fù)黍匾,不含自身
        for row in range(9):
            if board[x][y] == board[row][y] and row != x:
                return False
        # 判斷每個宮是否重復(fù),不含自身
        x_point = 3 * (x // 3)
        y_point = 3 * (y // 3)
        for x_move in range(3):
            for y_move in range(3):
                x_addr = x_point + x_move
                y_addr = y_point + y_move
                if x != x_addr and y != y_addr and board[x_addr][y_addr] == board[x][y]:
                    return False
        return True


su = Solution()
board = [["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"]]
res = su.solveSudoku(board)
print(board)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末呛梆,一起剝皮案震驚了整個濱河市锐涯,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌填物,老刑警劉巖纹腌,帶你破解...
    沈念sama閱讀 207,248評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異滞磺,居然都是意外死亡升薯,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評論 2 381
  • 文/潘曉璐 我一進(jìn)店門击困,熙熙樓的掌柜王于貴愁眉苦臉地迎上來覆劈,“玉大人,你說我怎么就攤上這事沛励。” “怎么了炮障?”我有些...
    開封第一講書人閱讀 153,443評論 0 344
  • 文/不壞的土叔 我叫張陵目派,是天一觀的道長。 經(jīng)常有香客問我胁赢,道長企蹭,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,475評論 1 279
  • 正文 為了忘掉前任智末,我火速辦了婚禮谅摄,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘系馆。我一直安慰自己送漠,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,458評論 5 374
  • 文/花漫 我一把揭開白布由蘑。 她就那樣靜靜地躺著闽寡,像睡著了一般代兵。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上爷狈,一...
    開封第一講書人閱讀 49,185評論 1 284
  • 那天植影,我揣著相機(jī)與錄音,去河邊找鬼涎永。 笑死思币,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的羡微。 我是一名探鬼主播谷饿,決...
    沈念sama閱讀 38,451評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼拷淘!你這毒婦竟也來了各墨?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,112評論 0 261
  • 序言:老撾萬榮一對情侶失蹤启涯,失蹤者是張志新(化名)和其女友劉穎贬堵,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體结洼,經(jīng)...
    沈念sama閱讀 43,609評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡黎做,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,083評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了松忍。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蒸殿。...
    茶點故事閱讀 38,163評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖鸣峭,靈堂內(nèi)的尸體忽然破棺而出宏所,到底是詐尸還是另有隱情,我是刑警寧澤摊溶,帶...
    沈念sama閱讀 33,803評論 4 323
  • 正文 年R本政府宣布爬骤,位于F島的核電站,受9級特大地震影響莫换,放射性物質(zhì)發(fā)生泄漏霞玄。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,357評論 3 307
  • 文/蒙蒙 一拉岁、第九天 我趴在偏房一處隱蔽的房頂上張望坷剧。 院中可真熱鬧,春花似錦喊暖、人聲如沸惫企。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽雅任。三九已至风范,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間沪么,已是汗流浹背硼婿。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留禽车,地道東北人寇漫。 一個月前我還...
    沈念sama閱讀 45,636評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像殉摔,于是被迫代替她去往敵國和親州胳。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,925評論 2 344

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