需要多个Sudoku解决方案
Need Multiple Sudoku Solutions
我正在尝试在程序中使用output multiple sudoku solutions
。例如,当您输入此输入时:
8..6..9.5.............2.31...7318.6.24.....73...........279.1..5...8..36..3......
.
的表示空白。数字代表已经填充的空间。输出应该是这样的Sudoku解决方案:
814637925325149687796825314957318462241956873638274591462793158579481236183562749
但是,我想输出多个解决方案。这将是应打印的所有解决方案:
814637925325149687796825314957318462241956873638274591462793158579481236183562749
814637925325941687796825314957318462241569873638472591462793158579184236183256749
834671925125839647796425318957318462241956873368247591682793154579184236413562789
834671925125839647796524318957318462241956873368247591682793154519482736473165289
834671925125839647796524318957318462241965873368247591682793154519482736473156289
但是我的程序只打印出一个解决方案。谁能帮我想出一种打印多种解决方案的方法?谢谢。
您不应该返回这里:
if(testTheNumber(arr, row, column+1)==true)
{
return true;
}
您应该让算法尝试所有可能的k值。而且您只能在末尾打印解决方案(当您找到所有数字时)。
您可以通过找到解决方案时简单地停止递归来做到这一点。例如,类似:
if (row == 9) {
// print solution here
return true;
}
并删除其他return true;
,然后重复:
testTheNumber(arr, row, column+1);
当您找到解决方案时(通过到达末端行)时,以上将停止递归,并且在此之后还将继续尝试更多的数字。
另外,您可能会在if(k == 10)
部分中有一个错误,因为k
在此时绝不应该是10。从k
循环中存在后,您将需要将单元格设置为0。
相关文章:
- 运行同一解决方案的另一个项目的项目
- Project Euler问题4的错误解决方案
- 计算每个节点的树高,帮助我解释这个代码解决方案
- C++:Application.cpp中抛出了未解析的外部符号(解决方案在问题的末尾,供未来的读者参考)
- visual c++,如何获取解决方案目录中的代码
- 有没有办法在远程设备上打开和编辑visual Studio 2017解决方案
- C++Matching Brackets 2解决方案不起作用
- 在 ubuntu3 上C++ goto 定义有什么解决方案吗16.04?
- 在 leetcode 上提交解决方案时出现堆栈缓冲区溢出错误
- 我的固定时间步长与增量时间和插值的解决方案是错误的吗?
- 无法在问题解决方案中执行输出逻辑
- 最大的回文产品 - 程序未运行,编写解决方案但无法理解问题
- 从预序遍历构造 bst 的 c++ 和 python 解决方案之间的区别
- 在一个解决方案中针对第三方静态库 (Creo) 的不同版本(版本)进行构建
- 如何巧妙地编写两个函数——一个用于检查是否存在解决方案,另一个用于获取所有解决方案
- 使用 Git 处理 C++ Visual Studio 2019 解决方案的外部依赖项源代码管理的最佳方法是什么?
- N-queen问题:无法弄清楚为什么我的解决方案不起作用
- 从排序数组中删除重复项,具有不同代码方式的相同解决方案具有不同的输出
- 使用XOR查找O(n)-解决方案中的两个字符串是否为变位符
- 需要多个Sudoku解决方案