八皇后問題遞迴解答

2021-08-14 03:34:35 字數 1037 閱讀 4557

八皇后問題是乙個以西洋棋為背景的問題:如何能夠在 8×8 的西洋棋棋盤上放置八個皇后,使得任何乙個皇后都無法直接吃掉其他的皇后?為了達到此目的,任兩個皇后都不能處於同一條橫行、縱行或斜線上。八皇后問題可以推廣為更一般的n皇后擺放問題:這時棋盤的大小變為n×n,而皇后個數也變成n。當且僅當 n = 1 或 n ≥ 4 時問題有解。

#includeusing namespace std;

int count=0;

int nodanger(int (*chess)[8],int row,int j)

} //檢查左上

for(i=row,k=j;i>=0&&k>=0;i--,k--)

}//檢查右下

for(i=row,k=j;i<8&&k<8;i++,k++)

}//檢查左下

for(i=row,k=j;i<8&&k>=0;i++,k--)

}//檢查右上

for(i=row,k=j;i>=0&&k<8;i--,k++)

}if(flag1||flag2||flag3||flag4||flag5)

return 0;

else

return 1;

}void eightqueue(int (*chess)[8],int row,int n)

if(row==8)

printf("\n");

count++;

} else

}//檢查左上

for(i=row,k=j;i>=0&&k>=0;i--,k--)

}//檢查右上

for(i=row,k=j;i>=0&&k<8;i--,k++)

}if(flag1||flag2||flag3)

return 0;

else

return 1;

}void eightqueue(int (*chess2)[8],int row,int n)

printf("\n");

count++;

} else

{ for(i=0;i

八皇后問題 遞迴

問題描述 在乙個8 8西洋棋盤上,有8個皇后,每個皇后佔一格 要求皇后間不會出現相互 攻擊 的現象,即不能有兩個皇后處在同一行 同一列或同一對角線上。問共有多少種不同的方法。程式 public void testeightprince 初始化,所有的位置都可以放置乙個皇后 for int x 0 x...

八皇后問題 遞迴

八皇后問題 遞迴 如何能夠在 8 8 的西洋棋棋盤上放置八個皇后,使得任何乙個皇后都無法直接吃掉其他的皇后?為了達到此目的,任兩個皇后都不能處於同一條橫行 縱行或斜線上。8 8的棋盤方格 每一行的某一列上要有乙個皇后 public class eightqueen 左上方 for int i 1 r...

八皇后問題 遞迴

八皇后問題,是乙個古老而著名的問題,是回溯演算法的典型案例.在8x8格的西洋棋上擺放8個皇后,使其不能互相攻擊,即 任意兩個皇后都不能處於同一行,同一列或同一斜線上,問有多少中擺法 92 第乙個皇后先放第一行第一列 第二個皇后放在第二行第一列,然後判斷是否ok,如果不ok,繼續放在第二列,第三列,依...