自己用Java写了一个9x9数独解题的小程序,用的是穷举法,解一般的题目问题不大

代码如下:package Test;

public class SensibleGame {

/**

* @param args

*/

int[][] mainNumber;

boolean[][] flagNumber;

public SensibleGame(int[][] mainNumber)

{

this.mainNumber = mainNumber;

flagNumber = new boolean[9][9];

for(int i=0;i<9;i++)

{

for(int j=0;j<9;j++)

{

if(mainNumber[i][j] == 0)

{

flagNumber[i][j] = false;

}

else

{

flagNumber[i][j] = true;

}

}

}

}

public boolean CheckRow(int i, int j)//检查(i,j)位置的行是否满足数独条件

{

// 代码省略

}

public boolean CheckColumn(int i, int j)//检查(i,j)位置的列是否满足数独条件

{

//代码省略

}

public boolean CheckRound(int i, int j)//检查(i,j)位置所在的3x3格是否满足数独条件

{

//代码省略

}

public void run()//计算方法 穷举填数过程

{

int i = 0;

int j = 0;

boolean previousFlag = false;

while(true)

{

if(i<0 || i>8 || j<0 || j>8)

{

System.out.print("下标越界!");

return;

}

if(previousFlag == false)

{

if(flagNumber[i][j] == true)

{

previousFlag = false;

if(i==8 && j==8)

{

System.out.print("计算结束\n");

break;

}

else if(i>=0&&i<8&&j==8)

{

i = i + 1;

j = 0;

continue;

}

else

{

j = j + 1;

continue;

}

}

boolean flag = false;

int k = 0;

while(!flag && k<9)

{

mainNumber[i][j] = ++k;

flag = CheckAll(i, j);

}

if(flag == true)

{

previousFlag = false;

if(i==8&&j==8)

{

System.out.println("计算结束\n");

}

else if(i>=0&&i<8&&j==8)

{

i = i + 1;

j = 0;

continue;

}

else

{

j = j + 1;

continue;

}

}

else

{

previousFlag = true;

mainNumber[i][j] = 0;

if(i==0&&j==0)

{

System.out.println("计算失败\n");

}

else if(i>0&&i<9&&j==0)

{

i = i -1;

j = 8;

continue;

}

else

{

j = j - 1;

continue;

}

}

}

else

{

if(flagNumber[i][j] == true)

{

previousFlag = true;

if(i==0&&j==0)

{

System.out.println("计算失败\n");

break;

}

else if(i>0&&i<9&&j==0)

{

i = i - 1;

j = 8;

continue;

}

else

{

j = j - 1;

continue;

}

}

boolean flag = false;

while(!flag && mainNumber[i][j]<9 && mainNumber[i][j]>0)

{

mainNumber[i][j] = mainNumber[i][j] + 1;

flag = CheckAll(i, j);

}

if(flag == true)

{

previousFlag = false;

if(i==8&&j==8)

{

System.out.println("计算结束\n");

break;

}

else if(i>=0&&i<8&&j==8)

{

i = i + 1;

j = 0;

continue;

}

else

{

j = j + 1;

continue;

}

}

else

{

previousFlag = true;

mainNumber[i][j] = 0;

if(i==0&&j==0)

{

System.out.println("计算失败\n");

break;

}

else if(i>0&&i<9&&j==0)

{

i = i - 1;

j = 8;

continue;

}

else

{

j = j - 1;

continue;

}

}

}

}

}

public void Print()//打印

{

int k =0;

for(int i=0;i<9;i++)

{

for(int j=0;j<9;j++)

{

System.out.print(mainNumber[i][j]);

if((++k)%9 == 0)

{

System.out.println("");

}

}

}

}

public static void main(String[] args) {

// TODO Auto-generated method stub

int[][] mainNumber = {{0,9,0,0,1,0,0,2,0},

{7,0,0,0,0,8,3,0,0},

{0,0,0,0,0,0,4,0,0},

{8,3,0,0,0,0,0,1,0},

{0,0,6,0,0,0,0,0,5},

{0,4,0,7,0,0,0,0,0},

{0,0,0,0,0,7,8,9,0},

{0,2,1,0,0,0,0,0,0},

{3,0,0,0,5,0,0,0,6},

};

SensibleGame sensibleGame = new SensibleGame(mainNumber);

sensibleGame.run();

sensibleGame.Print();

}

}

运行结果如下:

计算结束

493516728

762498351

185372469

837925614

216843975

549761283

654137892

921684537

378259146

php开发数独,数独解题小程序实现代码相关推荐

  1. 在线解题小程序有哪些功能?

    在线解题小程序最根本的核心感就是在于帮助学生解答自己不会的作业题,让学生能够在课余和放学后的时间里自主的学习,保证学习知识的巩固.窗那么,在线解题小程序开发有哪些功能? 1.题库选择 学生打开在线解题 ...

  2. 微信小程序开发打开另一个小程序的实现方法

    微信小程序打开另一个小程序,有两种方法:1.超链接:2.点击按钮. 全局配置: 跳转到其他小程序,需要在当前小程序全局配置中配置需要跳转的小程序列表,代码如下: App.json {..." ...

  3. 「编程面试题库」,大佬开发的一款小程序~

    这是一款好朋友zone7公众号号主开发的小程序--「编程面试题库」.涉及不同语言,不同方向,总有一个适合你!值得体验!(以下为作者的原文) 介绍一下这款小程序 咱们这款小程序记录了当前主流语言的一些常 ...

  4. 大型程序是如何开发的_大型小程序如何研发提效

    作者:王梦君 微信公众号:滴滴顺风车技术 出处:https://mp.weixin.qq.com/s/M1VArJ_ORY-eXSKzD6ysQw 导读: 自2016年小程序诞生以来,小程序以其&qu ...

  5. 如何给APP开发属于自己的小程序

    前言   工欲善其事,必先利其器.   首先,我们需要知道微信小程序是什么?微信小程序内核是什么?微信小程序的开发语言什么?这样才能更好的开发微信小程序,以及解决遇到的问题. 一.微信小程序是什么 微 ...

  6. 上传声音 微信小程序_SpringBoot开发案例之微信小程序录音上传

    前言 书接上回的<SpringBoot开发案例之微信小程序文件上传>,正常的业务流程是,口语测评需要学生通过前端微信小程序录入一段音频,通过调用第三方音频处理服务商进行评分,然后服务端对原 ...

  7. 基于uniapp开发的适用于微信小程序,头条小程序

    基于的uni-app开发的跨平台商城小程序(微信小程序,头条小程序,抖音小程序),合理的代码结构和规范的编码风格,能够让你很轻松的上手并转化成为自己的作品. 与之相支持的是,我们提供了一套完整的项目代 ...

  8. 云服务器定时启动程序_过去、现在和未来:开发一款微信小程序的技术迭代全过程...

    2019 年 10 月 19 日,由腾讯云与微信小程序团队联合举办的"小程序·云开发"技术峰会在北京召开.23 万小程序·云开发注册账户,50 多万开发者上手使用,这是腾讯云与微信 ...

  9. webview加载百度失败_移动AI系列百度paddle.js在助力开发智能化的微信小程序

    本文作者为百度 APP 移动研发部高级研发工程师,百度 Web 前端智能化方向主要成员.过去一段时间,曾负责百度多模视觉搜索前端业务及多模视觉搜索的前端性能优化等相关工作.划重点:文末有照片! 早在今 ...

  10. Android studio开发-单界面单机小程序

    Android studio开发-单界面单机小程序 最终结果展示 步骤: 建立项目 file-new-new project 新建一个项目文件 选择一个empty activity 配置项目名称以及项 ...

最新文章

  1. linux正则表达式_号称“天书”的正则表达式,要这么来讲,我小学三年级已经满分了
  2. Python【每日一问】36
  3. JqueryAjax异步加载在ASP.NET
  4. Grails精华:使用Groovy SQL
  5. Django--实现分页功能,并且基于cookie实现用户定制每页的数据条数
  6. 计算时间差_小王子是怎么用四步法进行时间计算并成功避开日界线的
  7. 努力培养自己对项目的主人翁意识
  8. 解决树莓派 no wireless interfaces found问题
  9. Qt 车牌识别 (EasyPR)
  10. 在OS X中使用Homebrew
  11. 3GPP使用方法与协议下载
  12. 硬方案——几种实用的恒流源电路设计方案,敬请收藏(运放、三极管在手,让你玩出多种花样)
  13. 引流的最快方法是什么?我是如何实现长期被动引流的
  14. python刷阅读_Python 刷高博客阅读量
  15. 科大讯飞实现了APP用自己的声音听故事
  16. 多智能体系统的概念与结构
  17. 小孩学计算机技术有什么好处,儿童学习电脑的好处
  18. (最简单)安装vmware-tools实现复制粘贴和文件复制粘贴
  19. A095_day01_微信小程序入门与组件
  20. SEO的最最意图终究是啥

热门文章

  1. 企业微信重磅更新!离职继承无需客户同意、群自动踢人、群成员去重...
  2. macbook边缘磕碰如何修复
  3. admi后台 vue_vue-ele-admin后台管理系统框架__布局
  4. 小程序上传图片前将图片剪切成固定尺寸
  5. Python 微博画像分析
  6. HTTP 405Method not allowed
  7. 洛谷 P4093 [HEOI2016/TJOI2016]序列 k-d tree
  8. 将照片修改成一寸大小
  9. Docker设置端口映射
  10. 电脑重装系统找不到计算机了,戴尔电脑重装系统后找不到硬盘或找不到引导设备怎么办?...