八皇后问题

来源:互联网 发布:jquery 数组排序 sort 编辑:程序博客网 时间:2024/05/20 10:51
public class Queen{static int QueenMax=8;//设置N皇后的长度static int times=0;//表示的第几种解法static int chess[]=new int[QueenMax];//存储位置public static void placequeen(int num){//显示n皇后算法int i=0;boolean save[]=new boolean[QueenMax];//使用布尔判断for(;i<QueenMax;i++)save[i]=true;    i=0;    while(i<num){//判断是否冲突    save[chess[i]]=false;    int k=num-i;    if((chess[i]+k>=0)&&(chess[i]+k<QueenMax))    save[chess[i]+k]=false;    if((chess[i]-k>=0)&&(chess[i]-k<QueenMax))    save[chess[i]-k]=false;    i++;    }    for(i=0;i<QueenMax;i++)    {    if(save[i]==false)    continue;//跳到下一次循环    if(num<QueenMax-1){    chess[num]=i;    placequeen(num+1);    }    else{    chess[num]=i;    times++;        if(times<=3){    for(i=0;i<QueenMax;i++){    String row="";    if(chess[i]==0);    else    for(int j=0;j<chess[i];j++)    row+="X ";            row+="Q ";     int j=chess[i];     while(j<QueenMax-1){     row+="X ";j++;     }     System.out.println(row);    }    System.out.println();    }    }    }}public static void main(String args[]){for(int i=0;i<QueenMax;i++)chess[i]=-1;placequeen(0);System.out.println("八皇后问题共有"+times+"种答案 \n");}}  

0 0
原创粉丝点击