hdu(2553)(回朔搜尋)

2021-06-17 22:24:23 字數 1049 閱讀 7344

//此題是經典的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 ...