求这个怎么用java解决数独

数独是一种考验眼力和逻辑的小遊戏关键在这个“独”字上,横竖不能重复方块不能重复。今天我给大家介绍一种利用“循环+递归+回溯”的办法来用Java程序替我们完成數独

类里有五个函数,一是主函数不多说;二是递归的主体函数function是解决数独的关键,体现循环+递归+回溯的主要逻辑;三和四都是是一個辨识函数一些较为复杂的判断逻辑把它抽出来写成辨识函数可以增加代码的可读性;五是一个打印函数很简单。

function函数的实际意义是填寫x[r][c]的数字更确切的说是填写x数组的(r,c)坐标以后的所有数字,内部基本的结构是4个并列的if第一个if是说如果我填的行号超过了最大值就打印整个数组;第二个if是说当我在填写第3、6、9行开头数字的时候要检查一下上边的三行的方块里是不是有重复的数字;第三个if是说我填写到最後一个元素的时候,要转到下一行开头去;第四个if是说当前的坐标是0的时候才开始循环填写否则跳过去填写下一个数字。

checkedbox函数利用了一個很巧妙的查重思想----循环嵌套map集合的先查后装思想当然这个思想你肯定没听说过,因为这个名字是我起的注意我在第59行给map装值的时候昰把数组的值装在map的键里,这样是为了第56行使用map集合的containsKey函数当然我这样给方块查重是有点秀操作了,其实用一个长度为9的数组也可以

framework 这两个常用的运行环境都可以安裝到云端里面@appinn

可以用鼠标或键盘来填写数字,支持颜色标记保存或打开数独文件( 自家的 hsol 格式)。强大的提醒功能帮你学会数独的各种解决技巧。退出时不会保存进度注意保存。

P.S. 去年有段时间@ 我玩过几个数独软件,都没有这个强大

我要回帖

更多关于 java解决数独 的文章

 

随机推荐