皖icp合肥网站建设,两颗米随州网站建设,网站运营方式,软文广告平台题目#xff1a; 思路#xff1a;
这题并不难#xff0c;它类似于N皇后问题。在N皇后问题中#xff0c;行#xff0c;列#xff0c;对角线#xff0c;写对角线#xff0c;都不能出现连续的皇后。
本题类似#xff0c;不过他是行#xff0c;列#xff0c;还有一个B…题目 思路
这题并不难它类似于N皇后问题。在N皇后问题中行列对角线写对角线都不能出现连续的皇后。
本题类似不过他是行列还有一个BOX内。 看完问题就来了Box非常不好写。
无论是i ji - j , i * j , i / j都不能很好得限制box当然我们可以使用最笨的方法就是通过判断范围如 0 i 2 0 j 2那么就属于第一个BOX内。但是这样太麻烦了虽然是可行的。但是我没写然后没想出来。。。。额尴尬,,ԾㅂԾ,,
看完提示发现i j 除于3就行了。 i/3 j / 3这样是可以的。但是还可以简化。将它变为一维的。 j / 3 (i / 3) * 3 取决于i的大小 来决定处于第几层。 代码是
//codeclass Solution {
public:bool isValidSudoku(vectorvectorchar board) {int hang[9][10]{0};int lie[9][10]{0};int box[9][10]{0};for(int i0;i9;i){for(int j 0;j9;j){if(board[i][j].) continue;int val board[i][j]-0;if(hang[i][val]) return false;if(lie[j][val]) return false;if(box[(j/3)(i/3)*3][val]) return false;//判断行列 box 是否已经有了这个数.hang[i][val]val;lie[j][val]val;box[(j/3)(i/3)*3][val]val;//没有那就添加进去.}}return true;}
};