我正在尝试制作数独求解器。我这样做的方法是,将每个i
,j
的所有可能性存储在称为answers[9][9][9]
的3d矩阵中。问题是我有一个函数,该函数还检查每个条目,并将可能与条目i
,{{冲突的任何条目的j
和i
值存储在不同的3d矩阵中1}}(当前)。 C ++不断在答案矩阵中更改我的值,但我不知道为什么!
我已删除注释中的所有代码。我尝试通过用clion调试来完成所有艰苦的步骤。突然之间就切换了。
j
cout给出:
void four::make_prob(sudoku_one::board &lev, sudoku_one::rank &sim) {
for (int a = 0; a < 9; a++) {
for (int b = 0; b < 9; b++) {
for (int k = 0; k < 9; k++) {
if (lev.read_ini(a, k) == 0) {
if (b != k) {
std::cout << "b4; first possible ans for 0,0: " << answers[0][0][0] << " abk: " << a << b << k << std::endl;
compare_ans(a, b, a, k, lev, sim);
std::cout << "after; first possible ans for 0,0: " << answers[0][0][0] << " abk: " << a << b << k << std::endl;
}
}
if (lev.read_ini(k, b) == 0) {
if (a != k) {
compare_ans(a, b, k, b, lev, sim);
}
}
}//end k
}
}
return;
}
void four::compare_ans(int a, int b, int x, int y, sudoku_one::board &lev, sudoku_one::rank &sim) {
prob_row[a][b][last_prob[a][b]] = x;
prob_col[a][b][last_prob[a][b]] = y;
last_prob[a][b]++;
}
我希望它始终为1,而不是5或8。
没有其他函数被调用。但是,在对compare_ans函数的一次调用中,您可以看到答案矩阵中出现了一个值。可能的原因是什么?