【无标题】

该博客介绍了如何使用Java编程解决经典的八皇后问题。通过一个名为`T`的类实现递归算法,检查每一行中皇后是否冲突,并找到所有可能的解决方案。博客内容详细展示了源代码,包括检查同一列、对角线冲突的条件判断以及递归放置皇后的逻辑。
摘要由CSDN通过智能技术生成

Java 八皇后问题

用Java解决八皇后问题


```java
public class EightQueens{
	public static void main(String args[]){
		int arr[] = new int [8];
		T t1 = new T();
		t1.f(arr,0);
	}
}
class T{
	int c=0;
	public boolean check(int[] arr,int i){
		//同一列上面有没有皇后
		for(int k=0;k<i;k++){
			if(arr[k]==arr[i]) return false;
		} 
		//左上
		for(int k=1;k<=i;k++){
			if(arr[i-k]==arr[i]-k) return false;
		}  
		//右上
		for(int k=1;k<=i;k++){
			if(arr[i-k]==arr[i]+k) return false;
		}  
		return true;
	}
	public void f(int []arr,int i){
		for(int j=0;j<8;j++){
			arr[i]=j;//i表示行 j表示列
			if(check(arr,i)) {
				if(i==7){
					c++;
					System.out.println("第"+c+"种方法");
						for (int p=0;p<8 ;p++ ) {
						System.out.print(arr[p]+" ");
					}
					System.out.println();
				}else{
					f(arr,i+1);
				}
			}
			//arr[i]=-1;
		}
		}
		

	}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值