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

来源:互联网 发布:逃离北上广的数据 编辑:程序博客网 时间:2024/06/14 08:47

八皇后以及N皇后问题:

public class EightQueens {        static int b[]={0,0,0,0,0,0,0,0};        static int sum=0;        static int times=1;        public static void main(String[] args){            search(0);           System.out.println("一共有"+sum+"个结果。");                }             /**       * 搜索指定行       * @param row       */        private static void search(int row){            if(row==8){                sum++;                printResult();                return;            }            for(int i=0;i<8;i++){                if(check(row,i)){  //从下标为0行0列的元素开始进行验证                  search(row+1);                }            }        }        /**       * 检查m,n 这个位置是否冲突        */        private static boolean check(int row,int col){            for(int i=0;i<row;i++){                if(b[i]==col){                    return false;                }                if((b[i]+i)==(row+col)){                    return false;                }                if((b[i]-i)==(col-row)){                    return false;                }            }            b[row]=col;            return true;        }        /**       * 打印结果       */        private static void printResult(){          int a=times;          if(a < 4){          System.out.println("第" + times++ + "种结果是:");            for(int j=0;j<8;j++){              for(int i=0;i<8;i++){                   if(b[i]==b[j]){ //让它自己跟自己比,从而得到可以输出Q的位置                      System.out.print("Q" + " ");                  }else{                      System.out.print("X" +" ");                  }              }              System.out.println(" ");             }           System.out.println(" ");          }       }  }  

运行结果:




0 0