用回溯求解八个皇后问题(java)
来源:互联网 发布:淘宝好评不返现怎么办 编辑:程序博客网 时间:2024/06/15 14:43
/**//*
刚看到一篇文章讲用回溯求解八个皇后问题的
我电脑里正好也有一个,是当年刚学完数据结构里的回溯算法时编的,一起发来看看.呵呵
*/
public class EightQueens3 ...{
int n = 15;
int b[][];
int count;
public static void main(String[] args) ...{
new EightQueens3();
}
public EightQueens3() ...{
b = new int[n][n];
getb();
}
private void getb() ...{
boolean bool[]=new boolean[b.length];
for (int i = 0; i < b.length; i++)...{bool[i]=true;
for (int j = 0; j < b[0].length; j++)
b[i][j] = 0;}
count=0;
trial(0, n,bool);
if(count==0)System.out.println("无解");
else System.out.println("共有"+count+"个解");
}
void trial(int i, int n,boolean bool[]) ...{
if (i > n-1)
...{display(b);count++;}
else ...{
for (int j = 0; j < b.length; j++) ...{
if (bool[j]==true)...{b[i][j] = 1;bool[j]=false;
if (is_right(b)==true)
...{
trial(i + 1, n,bool);
}}
b[i][j] = 0;
bool[j]=true;
}
}
}
private boolean is_right(int[][] b) ...{
int length = b.length;
for(int i=0;i<length;i++)
...{
int sum=0,sum2=0;
for(int j=0;j<length;j++)
...{
sum+=b[i][j];
sum2+=b[j][i];
}
if(sum>1||sum2>1) return false;
}
for (int i = 1; i < length; i++) ...{
int sum = 0;
int sum2 = 0;
for (int j = 0; j <= i; j++) ...{
sum += b[j][i - j];
sum2 += b[j][j + (length - 1 - i)];
}
if (sum > 1 || sum2 > 1)
return false;
}
for (int i = length; i <= length * 2 - 3; i++) ...{
int sum = 0;
int sum2 = 0;
for (int j = i - (length - 1); j < length; j++) ...{
sum += b[j][i - j];
sum2 += b[j][j - (i - (length - 1))];
}
if (sum > 1 || sum2 > 1)
return false;
}
;
return true;
}
private void display(int[][] a) ...{
for (int i = 0; i < a.length; i++) ...{
for (int j = 0; j < a[0].length; j++)
System.out.print(a[i][j] + " ");
System.out.println();
}
System.out.println();
}
}
- 用回溯求解八个皇后问题(java)
- 用回溯法求解八皇后问题
- 八皇后问题回溯求解
- 回溯法求解 “n 皇后 问题”——Java 实现
- 回溯法求解N皇后问题(Java实现)
- 用回溯法求解N皇后和迷宫问题
- 回溯法求解8皇后问题(转帖)
- 回溯法求解8皇后问题
- 回溯法求解n皇后问题
- N皇后问题回溯法求解
- 回溯法求解n皇后问题
- 回溯法求解N皇后问题。
- 回溯法求解八皇后问题
- N皇后问题利用回溯法求解
- 回溯法求解八皇后问题
- 回溯法求解n皇后问题
- 回溯法求解八皇后问题
- 回溯法求解N皇后问题
- 在线推广网站的十四种方法
- 继承访问权限的一些资料总结1
- 中国政治大手笔:国务院现有部委拟精简四分一
- 给各位使用msn插件的乡亲父老叔伯兄弟姐妹同志提个醒
- struct和class区别的背后
- 用回溯求解八个皇后问题(java)
- 学习编程:中国程序员入门的怪现象之一——古老的IDE
- C语言模块化
- 网站推广的20种办法
- C++ 中的成员对象(学习笔记)
- 历数昔日互联网霸主雅虎四大方向错误
- C语言宏定义技巧(常用宏定义)
- 美电影巨头起诉迅雷 索赔700万版权赔偿
- 解决Xmanager登陆HP_unix界面乱码问题的方法