数独输出Java_java – 使用回溯的数独求解器
我最近一直致力于回溯数独求解算法,目前我想询问我应该如何将我的solve()方法从void更改为boolean.
我正在使用一个非常简单的回溯算法,它目前工作正常,但我宁愿有一个布尔值而不是一个空格,因为有一个printstack不是很好…
谢谢!
public class Backtracking{
static int backtrack = 0;
//check if valid in row
protected static boolean validInRow(int row,int value)
{
for( int col = 0; col < 9; col++ )
if( board[row][col] == value )
return false ;
return true ;
}
//check if valid in column
protected static boolean validInCol(int col,int value)
{
for( int row = 0; row < 9; row++ )
if( board[row][col] == value )
return false ;
return true ;
}
//check if valid in 3*3
protected static boolean validInBlock(int row,int col,int value)
{
row = (row / 3) * 3 ;
col = (col / 3) * 3 ;
for( int r = 0; r < 3; r++ )
for( int c = 0; c < 3; c++ )
if( board[row+r][col+c] == value )
return false ;
return true ;
}
//call other methods
public void solve(int row,int col) throws Exception
{
if(row > 8)
throw new Exception("Solution found") ;
else
{
while(board[row][col] != 0)
{
if( ++col > 8 )
{
col = 0 ;
row++ ;
if( row > 8 )
throw new Exception( "Solution found" ) ;
}
}
for(int value = 1; value < 10; value++)
{
if(validInRow(row,value) && validInCol(col,value) && validInBlock(row,col,value))
{
board[row][col] = value;
new PrintEvent(board);
if( col < 8 )
solve(row,col + 1);
else
solve(row + 1,0);
backtrack++;
}
}
board[row][col] = 0;
}
}
}
数独输出Java_java – 使用回溯的数独求解器相关推荐
- 数独算法-递归与回溯
1.概述 数独(Sudoku)是一种运用纸.笔进行演算的逻辑游戏.玩家需要根据9×9盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行.每一列.每一个粗线宫内的数字均含1-9,不重复. 1)终盘 ...
- C++数独求解器与生成器
前几天笔者外出培训,刚刚学习了深度优先搜索,突然想到了数独的求解其实也可以用深搜实现,遂写了数独求解器与生成器. 1 数独求解器 1.1 预备 一开始,当然是头文件~ #include <ios ...
- 编程之美之数独求解器的C++实现方法
编程之美的第一章的第15节,讲的是构造数独,一开始拿到这个问题的确没有思路, 不过看了书中的介绍之后, 发现原来这个的求解思路和N皇后问题是一致的, 但是不知道为啥,反正一开始确实没有想到这个回溯法, ...
- 数独生成求解器——软件工程2018年个人作业项目(完成)
最近更新时间2018.12.29(百忙之中实现了UI界面,另开了一篇) GitHub连接:https://github.com/blingopen/sudoku 部分参考资料链接(有些参考之后忘记贴出 ...
- MATLAB 自动数独求解器(导入图片自动求解)
做了一个导入图片自动求解数独的软件,不过由于目前是通过最小二乘法匹配数字的,所以导入图片中的数字最好不要是手写的..,图片大概就像这样: 使用效果: 完整代码: function sudokuApp ...
- 好用的z3数独求解器
github 上发现一个好用 用z3 编写的数独求解器 传送门: https://github.com/dferri/z3-skyscrapers Generate a skyscrapers puz ...
- Python Z3约束求解器解决数独问题
Z3是由Microsoft Research开发的高性能定理证明器.接下来将使用Python3中的Z3库来实现对数独问题的解决. 关于Python中Z3的使用入门,可以参考这篇博文https://bl ...
- c语言数独程序源码,c语言编程:优化回溯解数独程序
上次在博客上发了一篇<C语言:回溯解数独程序>.实在很粗糙,效率相当差.正如在群里一位朋友说的: 你能不能别像傻瓜式一样从左到右从上到下这样搜索呢?如果你这样,我出第一行是空的数独题,那你 ...
- 达摩院自研数学规划求解器发布,最新技术将通过阿里云对外输出
8月18日消息,阿里巴巴达摩院研发的数学规划求解器参加国际权威榜单测评,在单纯形法测评中排名第一,打破世界纪录.这款拥有自主知识产权的求解器MindOpt现已用于阿里集团多个业务场景,包括云计算资源调 ...
最新文章
- 被骗两次?黄仁勋骗过世界的14秒,英伟达押宝未来的元宇宙……
- 360度无死角、近距离看「CNN」训练,是种什么体验?网友:美得不真实
- AS3中,setTimeOut、setInterval、Timer区别
- 我的世界局域网联机找不到服务器,我的世界局域网联机显示无效的会话和搜不到主机...
- 详解MySQL基准测试和sysbench工具
- 您的MyFitnessPal帐户几乎肯定已被黑客入侵,请立即更改密码
- 浅谈面向对象思想下的 C 语言
- HHR计划---电商推荐算法
- 解决vue addRoutes多次添加路由重复问题。
- LeetCode 647 回文子串
- paip.分布式应用系统java c#.net php的建设方案
- 微信群控,微信云控系统源码之uiautomator框架介绍
- 吃着火锅唱着歌学会Docker
- 对于百度统计热力点击图的研究
- 早期微处理器相关的中文翻译书籍
- 平板如何下载鸿蒙系统,鸿蒙系统2.0
- 电脑配置怎么看?这3种方法就可以轻松查看
- Centos 6.8双网卡配置内外网
- 【LGR-(-15) 】SCP 2022 第一轮(初赛 J 组)模拟 题解
- C++移动构造函数和移动赋值运算符