我正在编写一个C程序来生成可解的数独,但我陷入了困境

问题描述 投票:0回答:1

我按照以下方法用 C 语言生成可解的 9x9 数独

--) 我正在选择 1 到 9 中的一个数字,并检查 9x9 数独的每个位置,以检查在所选位置插入所选数字是否安全。我正在检查行、列和方框中是否存在数字。如果在所选位置插入数字不安全,那么我会从 1 到 9 范围内选择下一个数字,并对所选位置重复相同的过程。我对每个职位都重复这一切。

问题- 程序在 9x9 数独中留下一些值,但无法在该位置插入任何内容。可能是什么问题。您可以在附件中找到我的程序生成的数独Here you can the find the sudoku generated by my program

我的做法错了吗?如果有人需要查看代码,那么我可以在这里发布代码。

我尝试在互联网上寻找解决方案,并在 geeksforgeeks.com 上找到了一个解决方案,其中代码执行的操作与我几乎相同,并一次又一次生成相同的数独,我不知道为什么,尽管生成的数独是可解的。

c algorithm sudoku
1个回答
0
投票

您的方法不足以生成可解的数独:

您应该使用回溯:除了检查数字是否可以插入给定单元格之外,您还应该递归到下一个单元格并验证您是否获得了正确的数独。如果单元格中无法插入数字,则返回 false,表明您应该回溯并测试前一个单元格的不同数字。

© www.soinside.com 2019 - 2024. All rights reserved.