java实现回溯法解n皇后问题
2013-06-01 15:47
387 查看
package com.wzs;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Queue queue = new Queue(8);
queue.backtrack(0);
queue.totalSolve();
}
}
class Queue{
int n;
int s[];
int sum;//记录方案数
Queue(int m){
n=m;
s=new int
;
sum=0;
}
//从第0行开始依次向下搜索合适的位置
void backtrack(int t){
if(t>=n){
sum++;
for(int i=0;i<n;i++)
System.out.print(s[i]+" ");
System.out.println();
}
else{
for(int i=0;i<n;i++){
if(islegal(t,i)){
s[t]=i;
backtrack(t+1);
}
}
}
}
//假设第t行的位置为i
private boolean islegal(int t, int i) {
for(int k=0;k<t;k++)
if(i==s[k]||Math.abs(t-k)==Math.abs(s[k]-i))
return false;
return true;
}
public void totalSolve(){
System.out.println("总的方案数:"+sum);
}
}
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Queue queue = new Queue(8);
queue.backtrack(0);
queue.totalSolve();
}
}
class Queue{
int n;
int s[];
int sum;//记录方案数
Queue(int m){
n=m;
s=new int
;
sum=0;
}
//从第0行开始依次向下搜索合适的位置
void backtrack(int t){
if(t>=n){
sum++;
for(int i=0;i<n;i++)
System.out.print(s[i]+" ");
System.out.println();
}
else{
for(int i=0;i<n;i++){
if(islegal(t,i)){
s[t]=i;
backtrack(t+1);
}
}
}
}
//假设第t行的位置为i
private boolean islegal(int t, int i) {
for(int k=0;k<t;k++)
if(i==s[k]||Math.abs(t-k)==Math.abs(s[k]-i))
return false;
return true;
}
public void totalSolve(){
System.out.println("总的方案数:"+sum);
}
}
相关文章推荐
- n皇后问题回溯法---java图形界面实现回溯过程
- 回溯法求解N皇后问题(Java实现)
- java分治算法实现n皇后问题
- n皇后问题java递归实现
- JAVA回溯, 实现 矩阵中的路径寻找问题
- java分治算法实现n皇后问题
- 回溯法解决素数环问题java实现
- java分治算法实现n皇后问题
- 回溯法解决N皇后问题(java实现)
- 回溯法求解 “n 皇后 问题”——Java 实现
- Java实现回溯法解决0-1背包问题
- JAVA实现N皇后问题(回溯法)
- N皇后问题的递归回溯实现
- java分治算法实现n皇后问题
- n-皇后问题 C++实现 回溯法
- N皇后问题的Java实现
- N皇后问题java实现
- n皇后问题(人工智能试验java实现)
- 回溯法实例―n皇后算法 (java实现)