gpt4 book ai didi

java - 通过递归解决数独

转载 作者:行者123 更新时间:2023-12-01 13:15:22 26 4
gpt4 key购买 nike

我尝试编写递归来解决数独,但我遇到了递归问题。如果它无法解决,那么就可以了,但是如果它可以解决,那么就会陷入无限循环。

public static boolean recursion (int sodukuMatrix[][],int posRow, int posCol ,int i){

if (posRow==0 && posCol==0 && i==10)
return false;

if(there is existing number){
if (posCol==8 && posRow==8)
return true;
call recursion with next square
}
else {
i=sodukuMatrix[posRow][posCol]+1;
while (i<10){
if (function: if I put i at the current location it is ok){
sodukuMatrix[posRow][posCol]=i;
if (posCol==8 && posRow==8)
return true;
call recursion with next square
}
else
i++;
}
sodukuMatrix[posRow][posCol]=0;
return false;
}
return false;
}
}

最佳答案

稍微深入一下兔子洞。解决 Sudoko 看起来像是在类似于 N-Queens 问题的上下文中应用 Constraint-SatisfactionMIN-CONFLICTS 算法可用于与模拟退火相结合来找到最佳解决方案。

考虑来自 Peter Norvig's Artificial Intelligence a Modern Approach 的伪代码

function MIN-CONFLICTS(csp, max_steps) returns a solution or failure
inputs: csp, a constraint satisfaction problem
max_steps, the number of steps allowed before giving up

current <- an initial complete assignment for csp
for I = 1 to max_steps do
if current is a solution for csp then return current
var <- a randomly chosen conflicted variable from csp.VARIABLES
value <- the value v for var that minimizes CONFLICTS(var, v, current, csp)
set var = value in current
return failure

在给定当前分配的其余部分的情况下,CONFLICTS 函数会计算特定值违反的约束数量。

关于java - 通过递归解决数独,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22515368/

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