【发布时间】:2021-07-15 14:11:36
【问题描述】:
我的挑战是使用递归和回溯解决给定的数独字段。我们已经有一些代码,但我们不知道如何实现回溯。这是我们的代码:
int solve( int row, int col ) {
if (getValueFromField(row, col) != 0) {
if (col < 8) {
return solve(row, col + 1);
}
if (col == 8) {
return solve(row + 1, 0);
}
if (col == 8 && row == 8) {
return 1;
}
} else {
for (int i = 1; i <= 9; i++) {
if (checkValueInField(i, row, col)) {
setValueInField(i, row, col);
if (solve(row, col)) {
continue;
}
return solve(row, col + 1);
}
}
removeValueFromField(row, col);
return 0;
}
return -1;
}
removeValueFromField()、setValueInField() 等方法自行解释。如果没有,我可以向你解释他们是做什么的。
您对如何在此处实施回溯有任何想法吗? 你好! 拉斐尔
【问题讨论】:
标签: c recursion backtracking sudoku recursive-backtracking