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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

LeetCode:Sudoku Solver Valid Sudouku

發布時間:2023/12/9 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LeetCode:Sudoku Solver Valid Sudouku 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

其實數獨還是我挺喜歡的一個游戲。原來有本數獨的書。

其實Sudoku是基于Valid Sudouku.其實一開始有點想太多。基于平常玩數獨的經驗,有很多解數獨的規則。貌似這個人為判斷因素比較多。

而且一開始理解的valid是有解無解,其實這里要求的是給定的board里的數字是否符合規則,不一定能解。

其實我這里有3個函數,一個是判斷行除該位置外是否有相同值的,一個是列,最后一個是小正方形里。

而求解使用的是暴力,一個個嘗試。


public class SudokuSolver {
???
??? public void solveSudoku(char[][] board)
??? {
??????? if(board == null) return;
??????? suduku(board);
??? }
???
??? public boolean suduku(char[][] board)
??? {
??????? for(int i = 0;i<9;i++)
??????? {
??????????? for(int j = 0;j<9;j++)
??????????? {
??????????????? if(board[i][j] == '.')
??????????????? {
??????????????????? for(int k = 1;k<=9;k++)
??????????????????? {
??????????????????????? board[i][j] =? (char)('0' + k);
??????????????????????? if(isValid(board,i,j)&&suduku(board))
??????????????????????? {
??????????????????????????? return true;
??????????????????????? }
??????????????????????? board[i][j] = '.';
??????????????????? }
??????????????????? return false;
??????????????? }
??????????? }
??????? }
??????? return true;
??? }
???
??? public boolean isValid(char[][] board,int row,int column)
??? {
??????? if(board == null)return false;
??????? boolean valid = true;
??????? if(rowContainsValue(board,row,column,board[row][column]))
??????? {
??????????? valid = false;
??????????? return valid;
??????? }
??????? if(columnContainsValue(board,row,column,board[row][column]))
??????? {
??????????? valid = false;
??????????? return valid;
??????? }
??????? if(squareContainsValue(board,row,column,board[row][column]))
??????? {
??????????? valid = false;
??????????? return valid;
??????? }
??????? return valid;
??? }
???
??? public boolean isValidSudoku(char[][] board) {
???????
??????? if(board == null) return false;
??????? boolean valid = true;
??????? boolean flag = true;
??????? for(int i = 0;i<9&&flag;i++)
??????? {
??????????? for(int j = 0;j<9;j++)
??????????? {
??????????????? if(board[i][j] == '.')
??????????????????? continue;
??????????????? if(rowContainsValue(board,i,j,board[i][j]))
??????????????? {
??????????????????? valid = false;
??????????????????? flag = false;
??????????????????? break;
??????????????? }
??????????????? if(columnContainsValue(board,i,j,board[i][j]))
??????????????? {
??????????????????? valid = false;
??????????????????? flag = false;
??????????????????? break;
??????????????? }
??????????????? if(squareContainsValue(board,i,j,board[i][j]))
??????????????? {
??????????????????? valid = false;
??????????????????? flag = false;
??????????????????? break;
??????????????? }
??????????? }
??????? }
???????
??????? return valid;
???????
??? }
???
??? public boolean rowContainsValue(char[][] board,int row,int column,char value)
??? {
??????? boolean val =false;
??????? for(int i = 0;i<9;i++)
??????? {
??????????? if(board[row][i] == value&&i!=column)
??????????? {
??????????????? val = true;
??????????????? break;
??????????? }
??????? }
??????? return val;
??? }
??? public boolean columnContainsValue(char[][] board,int row,int column,char value)
??? {
??????? boolean val =false;
??????? for(int i = 0;i<9;i++)
??????? {
??????????? if(board[i][column] == value&&i!=row)
??????????? {
??????????????? val = true;
??????????????? break;
??????????? }
??????? }
??????? return val;
??? }
??? public boolean squareContainsValue(char[][] board,int row,int column,char value)
??? {
??????? boolean val =false;
??????? boolean flag = false;
??????? for(int i = (row/3)*3;i<(row/3)*3+3&&!flag;i++)
??????? {
??????????? for(int j=(column/3)*3;j<(column/3)*3+3;j++)
??????????? {
??????????????? if(board[i][j] == value&&i!=row&&j!=column)
??????????????? {
??????????????????? val = true;
??????????????????? flag = true;
??????????????????? break;
??????????????? }
??????????? }
??????? }
??????? return val;
??? }

}

轉載于:https://www.cnblogs.com/jessiading/p/3784093.html

總結

以上是生活随笔為你收集整理的LeetCode:Sudoku Solver Valid Sudouku的全部內容,希望文章能夠幫你解決所遇到的問題。

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