棋盤遊戲,dfs搜尋

2021-09-19 09:30:39 字數 842 閱讀 4771

問題描述

在乙個給定形狀的棋盤(形狀可能是不規則的)上面擺放棋子,棋子沒有區別。要求擺放時任意的兩個棋子不能放在棋盤中的同一行或者同一列,請程式設計求解對於給定形狀和大小的棋盤,擺放k個棋子的所有可行的擺放方案c。

input

輸入含有多組測試資料。

每組資料的第一行是兩個正整數,n k,用乙個空格隔開,表示了將在乙個n*n的矩陣內描述棋盤,以及擺放棋子的數目。 n <= 8 , k <= n

當為-1 -1時表示輸入結束。

隨後的n行描述了棋盤的形狀:每行有n個字元,其中 # 表示棋盤區域, . 表示空白區域(資料保證不出現多餘的空白行或者空白列)。

output

對於每一組資料,給出一行輸出,輸出擺放的方案數目c (資料保證c<2^31)。

sample input

2 1#.

.#4 4

…#…#.

.#…#…

-1 -1

sample output21

思路:

深度搜尋,每次搜尋不一樣的行,在一行中判斷每一列。

**:

#include#include#includeusing namespace std;

char a[10][10];

int b[10];

int n,k,num,cnt;

void dfs(int x)

if(x<1||x>n)return ;

for(int j=1;j<=n;j++)

}dfs(x+1);

}int main()

return 0;

}

簡單搜尋 DFS 棋盤問題

description 在乙個給定形狀的棋盤 形狀可能是不規則的 上面擺放棋子,棋子沒有區別。要求擺放時任意的兩個棋子不能放在棋盤中的同一行或者同一列,請程式設計求解對於給定形狀和大小的棋盤,擺放k個棋子的所有可行的擺放方案c。input 輸入含有多組測試資料。每組資料的第一行是兩個正整數,n k,...

棋盤(dfs 剪枝)

題目描述 有乙個m mm m的棋盤,棋盤上每乙個格仔可能是紅色 黃色或沒有任何顏色的。你現在要從棋盤的最左上角走到棋盤的最右下角。任何乙個時刻,你所站在的位置必須是有顏色的 不能是無色的 你只能向上 下 左 右四個方向前進。當你從乙個格仔走向另乙個格仔時,如果兩個格仔的顏色相同,那你不需要花費金幣 ...

DFS 棋盤行走

題目描述 解題思路 可以看出n m n mn m是真的小哇!所以直接爆搜就可以了 如果想保險一點,可以嘗試前3步爆搜,後面寬搜 code include include include include using namespace std const int way 4 2 int n,m,a 2...