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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

LeetCode 37 解数独

發(fā)布時(shí)間:2025/3/15 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LeetCode 37 解数独 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
  • 題目描述
  • 編寫一個(gè)程序,通過(guò)填充空格來(lái)解決數(shù)獨(dú)問(wèn)題。一個(gè)數(shù)獨(dú)的解法需遵循如下規(guī)則:數(shù)字 1-9 在每一行只能出現(xiàn)一次。 數(shù)字 1-9 在每一列只能出現(xiàn)一次。 數(shù)字 1-9 在每一個(gè)以粗實(shí)線分隔的 3x3 宮內(nèi)只能出現(xiàn)一次。 空白格用 '.' 表示。
  • 題解
  • 深度優(yōu)先搜索
  • 代碼
  • class Solution { public:bool dfs(vector<vector<char>>& board,int index,int n,vector<vector<bool>>& row,vector<vector<bool>>& col,vector<vector<bool>>& squ,vector<pair<int,int>>& vec){if (index>=vec.size()) return true;int i=vec[index].first;int j=vec[index].second;for (int k=1;k<=n;k++){if (!row[i][k]&&!col[k][j]&&!squ[((i-1)/3)*3+(j-1)/3+1][k]){row[i][k]=true;col[k][j]=true;squ[((i-1)/3)*3+(j-1)/3+1][k]=true;board[i-1][j-1]=k+'0';if (dfs(board,index+1,n,row,col,squ,vec)) return true;board[i-1][j-1]='.';row[i][k]=false;col[k][j]=false;squ[((i-1)/3)*3+(j-1)/3+1][k]=false;}}return false;}void solveSudoku(vector<vector<char>>& board) {int n=board.size();if (n!=9) return ;vector<vector<bool>> row(n+1,vector<bool>(n+1)),col(n+1,vector<bool>(n+1)),squ(n+1,vector<bool>(n+1));vector<pair<int,int>> vec;for (int i=1;i<=n;i++){for (int j=1;j<=n;j++){if (board[i-1][j-1]!='.'){row[i][board[i-1][j-1]-'0']=true; // i行中已經(jīng)有該數(shù)了col[board[i-1][j-1]-'0'][j]=true; // j列中已經(jīng)有該數(shù)了squ[((i-1)/3)*3+(j-1)/3+1][board[i-1][j-1]-'0']=true; // 3*3宮內(nèi)已經(jīng)有該數(shù)了}else{vec.push_back({i,j});}}}dfs(board,0,n,row,col,squ,vec);} };

    總結(jié)

    以上是生活随笔為你收集整理的LeetCode 37 解数独的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。