public class Java{
/*
1.设置一个一维数组int arr[] i表示棋盘的行,arr[i]表示棋盘的列
2.从第0行开始放置,共7行,用n表示
3.每行放置的时候遍历每一列,然后判断是否能放置
4.因为是逐行放置,所以只需判断列和对角线
5.从第0行到第7行开始放置,然后遍历每一列
6.当到第八行时,n==8;表示已经全部放完了,递归结束
*/
public static void main(String[] args){
T t=new T();
t.put(0); //表示从第0行开始放置
}
}
class T{
int arr[]= new int[8];//定义棋盘
public void print(){ //输出放置好的棋盘
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+" ");
}
System.out.println();
}
public boolean judge(int n){ //判断是否能放置
for(int i=0;i<n;i++){ //从已经放置的行开始遍历
if(arr[n]==arr[i] || Math.abs(n-i)==Math.abs(arr[n]-arr[i])){
//是否同一列 是否同一对角线
return false;
}
}
return true;
}
//n表示从第几行开始放置
public void put(int n){ //放置棋子
//打印完结束
if(n == 8){ //全部放置,结束
print();
return;
}
for(int i=0;i<8;i++){ //每一行从第0-7列逐步放置,然后判断是否可以放置
arr[n]=i;
if(judge(n)){ //如果可以,开始放置下一行
put(n+1);
}
}
}
}
Java实现八皇后
于 2022-09-19 22:42:42 首次发布