欢迎光临散文网 会员登陆 & 注册

自学JAVA中,入门级,学习视频韩顺平

2021-10-23 16:15 作者:看高达看电影  | 我要投稿

自己动手编写的作皇后:92种解法

目前刚刚学到断承

public class dg_bahuanghou {
   public static void main(String[] args) {
       int[] a = new int[8];//定义棋盘
       int[] b = new int[1];//定义解的计数器
       b_a x = new b_a();
       x.find(a, b, 0);
       System.out.println(b[0]);
   }
}

class b_a {
   boolean find(int[] a, int[] b, int m) {
       boolean z = false;//是否找到符合条件的位置
       if (m == 8) {//向下放置到此行时
           for (int k = 0; k < 8; k++) {//打印解
               System.out.print(" " + a[k]);
           }
           System.out.println();
           b[0] = b[0] + 1;//完成了一种皇后的放置解,解的个数加1
           z = false;//不在向下寻找
       } else {
           for (int j = 0; j < 8; j++) {//在同一行逐个找符合条件的解
               a[m] = j;//将值赋值给数组
               if (m == 0) {//第一行不用验证
                   z = true;
               } else {
                   for (int i = 0; i < m; i++) {//验证当前放置是否付合规则
                       if (a[m] != a[m - i - 1] & a[m] != (a[m - i - 1] + i + 1) &
                               a[m] != (a[m - i - 1] - i - 1)) {
                           z = true;//符合规则
                       } else {
                           z = false;//不符合规则
                           break;//不符合规则退出验证
                       }
                   }
               }
               if (z) {//如果本行放置的皇后位置成立
                   z = find(a, b, m + 1);//则向下行查找是否能放置皇后
               }
           }
       }
       return z;
   }
}

自学JAVA中,入门级,学习视频韩顺平的评论 (共 条)

分享到微博请遵守国家法律