下棋
題目描述
給出乙個棋盤,任意兩個棋子不能放在同一行或者同一列,問共有多少種方法。
輸入格式
第一行是兩個正整數,n k,用乙個空格隔開,表示了將在乙個n*n的矩陣內描述棋盤,以及擺放棋子的數目。 n <= 8 , k <= n
隨後的n行描述了棋盤的形狀:每行有n個字元,其中 # 表示棋盤區域(可放置), . 表示空白區域(不可放置)
(資料保證不出現多餘的空白行或者空白列)。
輸出格式
對於每一組資料,給出一行輸出,輸出擺放的方案數目c。
樣例輸入
2 1#.
.#4 4
…#…#.
.#…#…
樣例輸出21
#include
#include
using
namespace std;
const
int max=10;
char a[max]
[max]
;int vis[max]
;int n,k,ans;
void
dfs(
int x,
int cnt)
//x:第x層,cnt:還剩多少棋子要放
if(x==n)
return
;for
(int i=
0;i(vis[i]
==false
&&a[x]
[i]==
'#')
dfs(x+
1,cnt);}
intmain()
return0;
}
蒜頭君下棋
蒜頭君下棋 共一行,兩個整數nn和mm 1 leq n m leq 10001 n,m 1000 代表棋盤一共有 nn 行 mm 列。輸出乙個整數,代表棋盤上最多能放的馬的數量。樣例輸入1複製 2 4樣例輸出1複製 4樣例輸入2複製 3 4樣例輸出2複製 6 1 當棋盤只有一行時,棋盤上全放上棋子即...
搜尋 深度搜尋 廣度搜尋
迷宮 題目描述 一天extense在森林裡探險的時候不小心走入了乙個迷宮,迷宮可以看成是由n n的格點組成,每個格點只有2種狀態,和 前者表示可以通行後者表示不能通行。同時當extense處在某個格點時,他只能移動到東南西北 或者說上下左右 四個方向之一的相鄰格點上,extense想要從點a走到點b...
深度搜尋和廣度搜尋
這篇部落格很早之前就寫好了,但是一直沒有發出來。在進行詳細解說之前,我們需要先借用圖的概念,圖就是由一些小圓點 稱為頂點 和連線這些小圓點的直線 稱為邊 組成的。如下圖是由5個頂點 1,2,3,4,5 和5 條邊 1 2,1 2,1 4,2 5,3 4 組成的。現在我們從一號頂點開始遍歷這個圖,使用...