第1次实验——NPC问题(回溯算法、聚类分析)

八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。由此可延伸到N皇后问题。

Java实现如下:

package queen;

import java.util.Scanner;

public class Queen {
    public static int num = 0; //累计方案总数
    public static final int MAXQUEEN = QueenNum();//皇后个数,同时也是棋盘行列总数
    public static int[] cols = new int[MAXQUEEN]; //定义cols数组,表示8列棋子摆放情况
    
    public static int QueenNum(){    //自定义皇后个数
    	int q;
    	System.out.println("请输入皇后的数量(≥4)");
    	Scanner a = new Scanner(System.in);
    	q = a.nextInt();
    	return q;
    }
    public Queen() {    	
    	System.out.println("前三种解法如下所示:");
       //核心函数
    	getArrangement(0);
    	System.out.println(" ");
    	System.out.println(MAXQUEEN+"皇后问题有"+num+"种摆放方法。");
    }
    
    public void  getArrangement(int n){
     //遍历该列所有不合法的行,并用rows数组记录,不合法即rows[i]=true
     boolean[] rows = new boolean[MAXQUEEN];
     for(int i=0;i= 0)rows[cols[i]-d]=true;
        if(cols[i]+d <= MAXQUEEN-1)rows[cols[i]+d]=true; 
      
     }
     for(int i=0;i 

运行结果:

 第1次实验——NPC问题(回溯算法、聚类分析)_第1张图片


 

你可能感兴趣的:(八皇后,皇后问题,java,源代码,算法)