java实现求解所有九宫格
2013-09-06 10:30
721 查看
九宫格:在3×3的九宫格中,填入1到9之九个数,使得每一行、每一列、正斜线和反斜线上每3个数的和都相等。
解法:直接dfs暴力搜索即可。
解法:直接dfs暴力搜索即可。
public class Nine { static int[][] nine=new int[3][3]; static boolean[] used=new boolean[10]; public static void main(String[] args){ for(int i=0;i<10;++i){ used[i]=true; } dfs(0); } public static void dfs(int step){ if(step==9){ if(check()==true){ for(int i=0;i<3;++i){ for(int j=0;j<3;++j){ System.out.print(nine[i][j]+" "); } System.out.println(); } System.out.println("==========="); } } for(int i=1;i<=9;++i){ if(used[i]==true){ used[i]=false; nine[step/3][step%3]=i; dfs(step+1); used[i]=true; } } } public static boolean check(){ int[] sum_i=new int[3]; for(int i=0;i<3;++i){ sum_i[i]=0; for(int j=0;j<3;++j){ sum_i[i]+=nine[i][j]; } } if(sum_i[0]!=sum_i[1] || sum_i[1]!=sum_i[2] || sum_i[0]!=sum_i[2]) return false; int[] sum_j=new int[3]; for(int j=0;j<3;++j){ sum_j[j]=0; for(int i=0;i<3;++i){ sum_j[j]+=nine[i][j]; } } if(sum_j[0]!=sum_j[1] || sum_j[1]!=sum_j[2] || sum_j[0]!=sum_j[2]) return false; int sum1=nine[0][0]+nine[1][1]+nine[2][2]; if(sum_i[0]!=sum1) return false; int sum2=nine[1][1]+nine[0][2]+nine[2][0]; if(sum_i[0]!=sum2) return false; return true; } }
相关文章推荐
- Floyd-Warshall算法求解所有结点对的最短路径问题Java实现
- 利用邻接表求解所有节点的最短路径 java实现 可运行
- 求解一个字符串的所有排列 java实现
- Java实现等待所有子线程结束后再执行一段代码的方法
- elasticsearch查询所有数据restful api以及java代码实现
- java实现输入一个链表,反转链表后,输出链表的所有元素。
- java 递归实现删除或查询指定文件夹下的所有文件
- java中,一个类实现某个接口,必须重写接口中的所有方法吗
- 【Java,面试】实现一个算法,确定一个字符串的所有字符是否全都不同
- 蚁群算法java实现以及TSP问题蚁群算法求解
- Effective Java 对于所有对象都通用的方法 12.考虑实现Comparable(可以比较)接口
- 利用IO的知识,实现一个程序列出某个目录下的所有的”.java”文件。
- 从拼图游戏开始(四)_IDA*算法求解Java实现
- 请用Java实现一个算法:由a-z、0-9组成3位的字符密码,并打印所有可能的密码组合。
- mysql笔记七——Java实现excel表的读写(导出mysql数据库的所有表到excel表)
- Java 求1-100以内的所有素数,判断一个数是不是素数。Java代码实现附测试结果图
- 假如现在有一堆长度大于3小于9的电话号码,用座机呼叫,如果出现这样的号码【123和12345】那么12345将永远不会被拨出,因为拨到123的时候电话已经呼出了,试写一个函数输出所有不能被呼出的电话号码(java实现)
- JAVA实现把指定文件夹下的所有文件压缩成zip包
- java实现递归删除目录及目录下所有文件,递归和非递归方式都有
- Spark:使用Java实现所有的Transformation操作