自学JAVA中,入门级,学习视频韩顺平
自己动手编写的作皇后: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;
}
}