zoukankan      html  css  js  c++  java
  • 台哥算法练习:八皇后问题

     
    public class tai {
        int[]x=new int[9];
        int[][]a=new int[9][9];
        
        public int check(int i){         /**递归*/
            for(int j=1;j<=8;j++){
                if(a[j]==0){
                    x=j;
                    a_add(i,j);
                    if(i<8&&check(i+1)==0){
                        a_subtract(i,j);
                        x=0;
                        continue;
                    }
                    if(i==8&&x!=0){
                        a_subtract(i,j);
                        p();
                        x=0;
                        continue;
                    }
                    return x;
                }        
            }
            return 0;
        }
        
        public void p(){              /**打印*/
            for(int i=1;i<=8;i++){
                System.out.print(x);
            }
            System.out.println();
        }
        
        public void a_add(int i,int j){       /**标记*/
            for(int m=i;m<=8;m++)
                for(int n=1;n<=8;n++){
                    if(n==j)a[m][n]++;
                    if(Math.abs(m-i)==Math.abs(n-j))a[m][n]++;
                }
        }
        
        public void a_subtract(int i,int j){     /**去标记*/
            for(int m=i;m<=8;m++)
                for(int n=1;n<=8;n++){
                    if(n==j)a[m][n]--;
                    if(Math.abs(m-i)==Math.abs(n-j))a[m][n]--;
                }
        }
        public static void main(String[] args) {
            // TODO 自动生成方法存根
            tai t=new tai();
            t.check(1);
        }
    }
    /**
      *  需要注意的是:添加标记时,不能简单的用类似a[j]=1的标记方法,
      *  因为可能存在不同的两个皇后,它们对同一个位置造成了威胁,如果所
      *  用的标记方法不合理,可能会使不该去标记的位置失去标记。(表达不甚
      *  准确,仔细思考,定能明白其中缘由。)
      * */
  • 相关阅读:
    改变Ecplise项目窗口字体样式
    反射笔记
    日期、时间戳、字符串之间的转换
    Ajax处理后台返回的Json数据
    Ajax动态切换按钮
    生成随机数验证码
    Apache-SimpleEmail 简单应用
    Apache-POI 简单应用
    JavaMail API的应用
    checkbox怎么判断是否选中
  • 原文地址:https://www.cnblogs.com/chaohi/p/2330390.html
Copyright © 2011-2022 走看看