我有一个矩阵答案[9] [9] [9],它会不断变化

时间:2019-07-16 20:16:50

标签: c++ matrix sudoku

我正在尝试制作数独求解器。我这样做的方法是,将每个ij的所有可能性存储在称为answers[9][9][9]的3d矩阵中。问题是我有一个函数,该函数还检查每个条目,并将可能与条目i,{{冲突的任何条目的ji值存储在不同的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函数的一次调用中,您可以看到答案矩阵中出现了一个值。可能的原因是什么?

0 个答案:

没有答案