gpt4 book ai didi

c - 回溯所有答案

转载 作者:太空宇宙 更新时间:2023-11-04 08:26:48 26 4
gpt4 key购买 nike

我这里有这段代码。当您解决数独问题时,它工作得很好。

int solveBoard(int board[SIZE][SIZE], int rowPos, int colPos) {
int newValueToCheck, oldRowPos, oldColPos;
if (rowPos == SIZE) return 1;
if (board[rowPos][colPos] != 0) {
if (colPos == SIZE - 1) {
rowPos++;
colPos = 0;
} else colPos++;
if (solveBoard(board, rowPos, colPos) == 1) return 1;
return 0;
} for (newValueToCheck = 1; newValueToCheck <= SIZE; newValueToCheck++)
if (checkBoard(board, newValueToCheck, rowPos, colPos) == 1) {
board[rowPos][colPos] = newValueToCheck;
oldRowPos = rowPos;
oldColPos = colPos;
if (colPos == SIZE - 1) {
rowPos++;
colPos = 0;
} else colPos++;
if (solveBoard(board, rowPos, colPos) == 1) return 1;
rowPos = oldRowPos;
colPos = oldColPos;
board[rowPos][colPos] = 0;
}
return 0;
}

唯一的问题是,我想获得所有可能的答案。我将如何修改它并获得所有可能的答案。

最佳答案

找到解决方案后不要回溯搜索。因此,在您尝试新值并忽略其返回值的地方进行简单的递归调用:

solveBoard(board, rowPos, colPos);

然后是递归末尾的每个解决方案:

if (rowPos == SIZE) printSolution(); return 1;

关于c - 回溯所有答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30127312/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com