棋盤問題 POJ - 1321
在一個給定形狀的棋盤(形狀可能是不規則的)上面擺放棋子,棋子沒有區別。要求擺放時任意的兩個棋子不能放在棋盤中的同一行或者同一列,請程式設計求解對於給定形狀和大小的棋盤,擺放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 <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int n,m,res,vis[10];
char a[10][10];
void dfs(int cur,int x)
{
if(x==0)
{
res++;
return;
}
if(cur==n)
return;
for(int i=0;i<n;i++)
{
if(!vis[i]&&a[cur][i]=='#')
{
vis[i]=1;
dfs(cur+1,x-1);
vis[i]=0;
}
}
dfs(cur+1,x);//從下一行開始放
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
while(cin >> n >> m)
{
if(n==-1&&m==-1)
break;
for(int i=0;i<n;i++)
cin >> a[i];
res=0;
dfs(0,m);
cout << res << endl;
}
return 0;
}
相關文章
- poj 1321 棋盤問題 回溯 JavaJava
- POJ1321棋盤問題(DFS)
- 棋盤問題
- 棋盤覆蓋問題
- 分治演算法-求解棋盤覆蓋問題演算法
- POJ3984-迷宮問題
- POJ 3264 Balanced Lineup【RMQ問題】MQ
- POJ3984 迷宮問題【BFS】
- 怎樣解題|題3.2.14:填充國際象棋棋盤
- I. 棋盤
- 棋盤 K皇后
- 棋盤覆蓋
- poj--2019Cornfields+二維RMQ問題MQ
- 怎樣解題|題3.3.28:國際象棋棋盤上的車
- 電子棋盤(二)——戰棋地形的多樣性
- 【每日一題】 688. 騎士在棋盤上的機率每日一題
- 一組簡單一點的題目(六) B – 小兔的棋盤
- turtle繪製國際象棋棋盤
- 馬踏棋盤演算法(騎士周遊問題)----遞迴與貪心優化演算法演算法遞迴優化
- ssh問題之覆盤
- CSP歷年複賽題-P3956 [NOIP2017 普及組] 棋盤
- 413周賽·第一題 - 3274. 檢查棋盤方格顏色是否相同
- POJ3468 A Simple Problem with Integers---樹狀陣列(區間問題)陣列
- 資料結構:稀疏棋盤的實現資料結構
- Processing 網格紋理製作(棋盤格)
- 9路棋盤識別-程式碼備份
- 16×16大小棋盤的五子棋小程式 Java實現Java
- 迴圈_推導式_繪製棋盤_函式函式
- poj 1038 Bugs Integrated, Inc. 題解
- 【每日一題】1812. 判斷國際象棋棋盤中一個格子的顏色每日一題
- Luogu P5089 元素週期表 / Codeforces 1012B Chemical table 題解 [ 並查集 ] [ 二分圖 ] [ 圖論建模 ] [ 棋盤覆蓋問題 ]並查集圖論
- 如何做線上問題覆盤
- Flutter_Webview 鍵盤彈出問題FlutterWebView
- 後疫情時代,城市更需盤活資料治理與運營這盤棋
- 發行USDD,孫宇晨在下一盤大棋
- 棋盤完美覆蓋數(小規模原理實現)
- Poj--3080Blue Jeans+KMP水題KMP
- 題解 P1541 【烏龜棋】