nqueens.java

来自「算法导论上机作业java实现」· Java 代码 · 共 77 行

JAVA
77
字号



public class Nqueens {
	//static int k ;
	static int[] X =  {0,0,0,0,0,0};
	public static int Absolute_value(int i){
		if(i<0)
			return -i;
		else
			return i;
	} 

	public static int Place(int k){
		
		for(int i=0;i<k;i++){
			if(X[i]==X[k] || Absolute_value(X[i]-X[k])==Absolute_value(i-k))
				
				return -1;
				
			else
				return 1;
		}
		
		
		return 0;
		
	}
	public static void Sub_queen(int n){
		 X[0]=1;
		 int k =1;
			 while(k>0){
				 while(X[k]<n&&k<n){
					 if(Place(k)==1){
						 k+=1;
						 X[k]=1;
					 }
					 else
						 X[k]+=1;
				 }
				 k=k-1;
				 X[k]=X[k]+1;
				 if(k==0&&X[0]<=n)
					 k+=1;
			 }
			 
		 
	}
	public static void main(String[] args) {
		//int n;
		//System.out.println("input the number of the queens");
		/*try {
			n = System.in.read();
			System.out.println(n);
			Sub_queen(n);
			for(int i =0;i<n;i++){
				System.out.println("第"+i+1+"行皇后放在第"+X[i]+1+"列处。");
			}
		} catch (IOException e) {
			// TODO 自动生成 catch 块
			e.printStackTrace();
		}*/
		
		Sub_queen(5);
		for(int i =0;i<5;i++){
			System.out.println("第"+(i+1)+"行皇后放在第"+X[i]+"列处。");
	}
		
	}
}


 


	

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?