//此題是經典的n皇后問題,描述:在乙個n*n的棋盤上要擺放n個皇后,要求任意兩個
//皇后不能在同一行,同一列或者同一條與棋盤的邊成45度角的斜線上,即與對角線
//平行的斜線上,求對於不同的n,各有多少種擺法使任意兩個皇后不能相互攻擊。
//用回溯法就可以解決,設皇后的編號依次為1,2,……,n,則可以認為第i個皇后
//必須擺放在第i行,然後列舉第乙個皇后的位置進行回溯,若某一次發現某個皇后
//無法找到擺放位置則直接返回,如果所有皇后都可以找到擺放位置,則說明存在
//一種擺法滿足要求,統計有多少種擺法即可。
//此題n<=10,測試資料中會有大量重複資料,因此要儲存答案,遇到曾經計算過的n直接輸出即可,否則可能會超時。
//因為每行只佔乙個,所以用行標記是否被佔;
//由於列是逐漸增加的,就不需要標記了。
#include"stdio.h"
#include"string.h"
int map[1000],hang[1000];
int a[100],cnt,n;
void dfs(int sum)
for(i=1;i<=n;i++)
}if(flag)}}
}int main()
while(scanf("%d",&n),n)
return 0;}
直接打表。。
#include"stdio.h"
int a[11]=;
int main()
return 0;
}#include"stdio.h"
#include"string.h"
#include"math.h"
int a[20],b[20];
int n,ans;
int judge(int x)
void dfs(int k)//從第零行開始搜尋,搜尋到第k行的時候。。
else}}
}int main()
while(scanf("%d",&n),n)
return 0;
}
N皇后問題 HDU 2553
在n n的方格棋盤放置了n個皇后,使得它們不相互攻擊 即任意2個皇后不允許處在同一排,同一列,也不允許處在與棋盤邊框成45角的斜線上。你的任務是,對於給定的n,求出有多少種合法的放置方法。input共有若干行,每行乙個正整數n 10,表示棋盤和皇后的數量 如果n 0,表示結束。output共有若干行...
N皇后問題 HDU 2553
在n n的方格棋盤放置了n個皇后,使得它們不相互攻擊 即任意2個皇后不允許處在同一排,同一列,也不允許處在與棋盤邊框成45角的斜線上。你的任務是,對於給定的n,求出有多少種合法的放置方法。input 共有若干行,每行乙個正整數n 10,表示棋盤和皇后的數量 如果n 0,表示結束。output 共有若...
N皇后問題 HDU 2553
問題 在n n的方格棋盤放置了n個皇后,使得它們不相互攻擊 即任意2個皇后不允許處在同一排,同一列,也不允許處在與棋盤邊框成45角的斜線上。你的任務是,對於給定的n,求出有多少種合法的放置方法。input 共有若干行,每行乙個正整數n 10,表示棋盤和皇后的數量 如果n 0,表示結束。output ...