c語言 dfs n皇后問題 深度優先搜素

2021-10-02 11:15:09 字數 948 閱讀 3172

c語言dfs基礎入門題目

n皇后問題

n-皇后問題是指將 n 個皇后放在 n∗n 的西洋棋棋盤上,使得皇后不能相互攻擊到,即任意兩個皇后都不能處於同一行、同一列或同一斜線上。

現在給定整數n,請你輸出所有的滿足條件的棋子擺法。

輸入格式

共一行,包含整數n。

輸出格式

每個解決方案佔n行,每行輸出乙個長度為n的字串,用來表示完整的棋盤狀態。

其中」.」表示某乙個位置的方格狀態為空,」q」表示某乙個位置的方格上擺著皇后。

每個方案輸出完成後,輸出乙個空行。

資料範圍

1≤n≤9

輸入樣例:

4輸出樣例:

.q……q

q……q.

…q.q…

…q.q…

n皇后問題是dfs入門中經典的一道題目

下面是兩種做法

1.

#include#define n 20

int n;

char map[n][n];//地圖

bool col[n],dmap[n],udmap[n];//分別是 列 正對角線 反對角線 bool型別初始為false代表所在列或對角線有無其他的皇后

void dfs(int u)//定義dfs搜尋函式

printf("\n");

} return;//return 忘了加return會導致無輸出 因為下面還有dfs函式 會不斷執行呼叫 }

dfs(x,y+1,s);//不放皇后

//放皇后

if(!row[x]&&!col[y]&&!dmap[x+y]&&!udmap[x-y+n]) }

int main()

DFS N皇后問題

在n n的方格棋盤放置了n個皇后,使得它們不相互攻擊 即任意2個皇后不允許處在同一排,同一列,也不允許處在與棋盤邊框成45角的斜線上。你的任務是,對於給定的n,求出有多少種合法的放置方法。input 共有若干行,每行乙個正整數n 10,表示棋盤和皇后的數量 如果n 0,表示結束。output 共有若...

HDU 2553 DFS N皇后問題

problem description 在n n的方格棋盤放置了n個皇后,使得它們不相互攻擊 即任意2個皇后不允許處在同一排,同一列,也不允許處在與棋盤邊框成45角的斜線上。你的任務是,對於給定的n,求出有多少種合法的放置方法。input 共有若干行,每行乙個正整數n 10,表示棋盤和皇后的數量 如...

dfs N皇后問題 HDU 2553

在n n的方格棋盤放置了n個皇后,使得它們不相互攻擊 即任意2個皇后不允許處在同一排,同一列,也不允許處在與棋盤邊框成45角的斜線上。你的任務是,對於給定的n,求出有多少種合法的放置方法。input 共有若干行,每行乙個正整數n 10,表示棋盤和皇后的數量 如果n 0,表示結束。output 共有若...