问题遇到的现象和发生背景
今天在力扣上做题,关于检查数独是否正确那题,输出结果和预期结果一直不对
问题相关代码,请勿粘贴截图
class Solution {
public:
bool isValidSudoku(vector<vector<char>>& board) {
for(int i=0; i<9; i++){
for(int j=0; j<9; j++){
if(board[i][j] != '.'){
char now = board[i][j];
int count=0;
//1.数字 1-9 在每一行只能出现一次
// 2.数字 1-9 在每一列只能出现一次
for(int k=1;k<9;k++){
if(board[i][k] == now || board[k][j] == now){
count++;
if(count ==3)
{return 0;}
}
}
//3. 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图)
count=0; //计数器
int r = i/3;//获得大格子所在行
int c = j/3;//获得大格子所在列
char b[9] = {board[r][c],board[r][c+1],board[r][c+2],
board[r+1][c],board[r+1][c+1],board[r+1][c+2],
board[r+2][c],board[r+2][c+1],board[r+2][c+2]};//获得大格子内的所有数
for(int k=0;k<9;k++){//遍历上面的数组
if(b[k] == now){//如果遍历的这个数和当前的数相等
count++;//计数器+1 (遍历必然会遍历本身的数)
if(count == 2){//如果这个数在格子内出现两次 ,即出现重复数
return 0;//数独不合格
}
}
}
}
}
}
return 1;
}
};
运行结果及报错内容
示例给的是true;
运行结果一直是false
我的解答思路和尝试过的方法
试过把3.后面的代码删掉,示例的运行结果是true,说明前两条没问题,是第三条有问题;
也试过把计数器判定的2次改成3次,也能运行出来true
我想要达到的结果
不明白3.是哪个地方出现了问题,可能是我忽视了某些基础问题,求指导!