python求数独全解
生活随笔
收集整理的這篇文章主要介紹了
python求数独全解
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
數獨可能不止一個解,本程序試圖找出全部的解,測試發現所謂的最難數獨運行時間明顯非常長
所謂最難的就是第一個范例,得出唯一解倒是不滿,只是程序要遍歷全部可能性,導致耗費時間冗長。
范例二是多解數獨
范例二和范例三耗費時間極短
sudoku = [[8, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 3, 6, 0, 0, 0, 0, 0], [0, 7, 0, 0, 9, 0, 2, 0, 0], [0, 5, 0, 0, 0, 7, 0, 0, 0], [0, 0, 0, 0, 4, 5, 7, 0, 0], [0, 0, 0, 1, 0, 0, 0, 3, 0], [0, 0, 1, 0, 0, 0, 0, 6, 8], [0, 0, 8, 5, 0, 0, 0, 1, 0], [0, 9, 0, 0, 0, 0, 4, 0, 0]]sudoku = [[0, 0, 0, 2, 0, 0, 1, 0, 0], [8, 0, 0, 0, 0, 6, 0, 3, 0], [0, 0, 0, 0, 0, 1, 7, 5, 0], [0, 0, 0, 5, 0, 0, 4, 0, 0], [0, 7, 5, 0, 0, 0, 6, 2, 0], [0, 0, 2, 0, 0, 3, 0, 0, 0], [0, 5, 4, 7, 0, 0, 0, 0, 0], [0, 2, 0, 6, 0, 0, 0, 0, 9], [0, 0, 6, 0, 0, 9, 0, 0, 0]]sudoku = [[0, 6, 1, 0, 3, 0, 0, 2, 0], [0, 5, 0, 0, 0, 8, 1, 0, 7], [0, 0, 0, 0, 0, 7, 0, 3, 4], [0, 0, 9, 0, 0, 6, 0, 7, 8], [0, 0, 3, 2, 0, 9, 5, 0, 0], [5, 7, 0, 3, 0, 0, 9, 0, 0], [1, 9, 0, 7, 0, 0, 0, 0, 0], [8, 0, 2, 4, 0, 0, 0, 6, 0], [0, 4, 0, 0, 1, 0, 2, 5, 0]]def show():for i in range(len(sudoku)):for j in range(len(sudoku[i])):print(sudoku[i][j],end=" ")print("")def check(i,j,value):for item in sudoku[i]:if item == value:return False for item in sudoku:if item[j] == value:return False row = i//3 col = j//3 for r in range(row*3,row*3+3):for c in range(col*3,col*3+3):if sudoku[r][c] == value:return False return True def shudu():for i in range(9):for j in range(9):if i == 8 and j == 8 and sudoku[i][j] > 0:show()print("=================")if sudoku[i][j] == 0:for value in range(1, 10):if check(i, j, value):sudoku[i][j] = valueif not shudu():sudoku[i][j] = 0 return False shudu()總結
以上是生活随笔為你收集整理的python求数独全解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python 程序员专属情话_拿来就能用
- 下一篇: 本地搭建属于自己的ChatGPT:基于P