自學(xué)JAVA中,入門級,學(xué)習(xí)視頻韓順平
自己動手編寫的作皇后:92種解法
目前剛剛學(xué)到斷承
public class dg_bahuanghou {
? ?public static void main(String[] args) {
? ? ? ?int[] a = new int[8];//定義棋盤
? ? ? ?int[] b = new int[1];//定義解的計數(shù)器
? ? ? ?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;//完成了一種皇后的放置解,解的個數(shù)加1
? ? ? ? ? ?z = false;//不在向下尋找
? ? ? ?} else {
? ? ? ? ? ?for (int j = 0; j < 8; j++) {//在同一行逐個找符合條件的解
? ? ? ? ? ? ? ?a[m] = j;//將值賦值給數(shù)組
? ? ? ? ? ? ? ?if (m == 0) {//第一行不用驗證
? ? ? ? ? ? ? ? ? ?z = true;
? ? ? ? ? ? ? ?} else {
? ? ? ? ? ? ? ? ? ?for (int i = 0; i < m; i++) {//驗證當(dāng)前放置是否付合規(guī)則
? ? ? ? ? ? ? ? ? ? ? ?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;//符合規(guī)則
? ? ? ? ? ? ? ? ? ? ? ?} else {
? ? ? ? ? ? ? ? ? ? ? ? ? ?z = false;//不符合規(guī)則
? ? ? ? ? ? ? ? ? ? ? ? ? ?break;//不符合規(guī)則退出驗證
? ? ? ? ? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ?if (z) {//如果本行放置的皇后位置成立
? ? ? ? ? ? ? ? ? ?z = find(a, b, m + 1);//則向下行查找是否能放置皇后
? ? ? ? ? ? ? ?}
? ? ? ? ? ?}
? ? ? ?}
? ? ? ?return z;
? ?}
}