dfs 走過的標記取消

2022-06-27 08:57:12 字數 1219 閱讀 4589

在乙個給定形狀的棋盤(形狀可能是不規則的)上面擺放棋子,棋子沒有區別。要求擺放時任意的兩個棋子不能放在棋盤中的同一行或者同一列,請程式設計求解對於給定形狀和大小的棋盤,擺放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 output
2

1題意 : 只能在 # 的位置下東西,問最終由多少種放置方法 ?

#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;

const int eps = 1e6+5;

const double pi = acos(-1.0);

const int inf = 0x3f3f3f3f;

#define max(a,b) a>b?a:b

#define min(a,b) a>b?b:a

#define ll long long

int n, k;

char mp[10][10];

int ans = 0;

int c[10];

void dfs(int r, int cnt)

if (r > n || cnt > k) return;

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

}dfs(r+1, cnt);

}int main()

ans = 0;

dfs(1, 0);

printf("%d\n", ans);

}return 0;

}

struts2 標記取包含map的list的值

如下list map.put id 001 map.put nm test1 list.add map map.put id 002 map.put nm test2 list.add map 放於request中 request.setattribute testlist list 上面的list...

DFS深度優先搜尋中的標記問題

同樣是象棋中馬的問題,有以下兩個具體情景 問題1 給起點,走三步,求所有可能到達的點 問題2 給起點,不限制步數,求能否到達終點 上邊的dfs void dfs int x,int y,int s vis x y 0 下邊的dfs int dfs int x,int y vis x y 1 for ...

hdoj1181解題報告,DFS,標記用過的的方法

給一堆字串,判斷能否從某個字母做開頭,首尾相連,到某個字母的結尾 要注意,每一種變換只能使用一次,例如b t,只能用一次。否則無限迴圈。include include includeusing namespace std char s 2000 int m 30 30 vis 30 30 int x...