n皇後問題:輸入整數n, 要求n個國際象棋的皇後,擺在n*n的棋盤上,互相不能攻擊,輸出全部方案。 代碼如下: ...
n皇後問題:輸入整數n, 要求n個國際象棋的皇後,擺在
n*n的棋盤上,互相不能攻擊,輸出全部方案。
代碼如下:
#include <iostream> #include<cmath> using namespace std; int queenPos[100]; void NQueen(int n,int N); int main() { int N; cout<<"請輸入N的值:"; cin>>N; NQueen(0,N); return 0; } void NQueen(int n,int N) { if(n==N)//執行完畢,輸出結果 { for(int i=0;i<N;i++) { cout<<queenPos[i]+1<<" "; } cout<<endl; return; } for(int i=0;i<N;i++)//一列一列嘗試 { int j; for(j=0;j<n;j++) { if(queenPos[j]==i||abs(queenPos[j]-i)==abs(n-j))//列相同,或者對角 break; } if(j==n) { queenPos[n]=i; NQueen(n+1,N); } } }