一个java解数独的问题
玩过数独的人一定知道解数独时有一个方法叫猜测,就是猜完后验证这是正确的或者矛盾的。如果是矛盾的,那就返回去猜另一个可能的值;如果猜了后没有发现矛盾也没解出,那就继续猜。那...
玩过数独的人一定知道解数独时有一个方法叫猜测,就是猜完后验证这是正确的或者矛盾的。如果是矛盾的,那就返回去猜另一个可能的值;如果猜了后没有发现矛盾也没解出,那就继续猜。那么这个猜测的过程怎么用java写呢?或者说是怎么一个过程?谢谢了!
展开
1个回答
展开全部
可用递归方式来做,具体java代码我就不写了。
把格子从左上到右下排成64个,按次序每个做遍历。
思路大概是这样的:
function MakeAnswer(传入父格子)
{
取父格子下的第一个子格子作为当前格子
计算当前格子所有可取的解
while (当前格子还有可取的未尝试的解)
{
取一个这个当前格子未尝试过的解,并把这个解标记成已尝试
判断是否这个当前格子已经是最后一个格子了,若是,则表示已经得到可行的解,则这个猜测是可行的,否则继续递归 MakeAnswer(当前格子)
}
}
某个格子的尝试的解改变了之后,往下递归子格子的时候,所有子格子的可能的解都有可能会变。
写得比较抽象,不知你看懂没
把格子从左上到右下排成64个,按次序每个做遍历。
思路大概是这样的:
function MakeAnswer(传入父格子)
{
取父格子下的第一个子格子作为当前格子
计算当前格子所有可取的解
while (当前格子还有可取的未尝试的解)
{
取一个这个当前格子未尝试过的解,并把这个解标记成已尝试
判断是否这个当前格子已经是最后一个格子了,若是,则表示已经得到可行的解,则这个猜测是可行的,否则继续递归 MakeAnswer(当前格子)
}
}
某个格子的尝试的解改变了之后,往下递归子格子的时候,所有子格子的可能的解都有可能会变。
写得比较抽象,不知你看懂没
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询