您的位置:首页 > 其它

POJ 1321 棋盘问题

2012-08-31 15:21 381 查看
大意:给你一张棋盘,给你一定的棋子,空白区域不能放,问最多可能有几种方法。

思路:典型的搜索题目。

CODE:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
using namespace std;

const int SIZE = 80;
int v[SIZE];
char maze[SIZE][SIZE];
int n, k;
int cnt;

void dfs(int r, int num)
{
if(num == k)
{
cnt++;
return ;
}
if(r > n) return ;
for(int i = 0; i < n; i++)
{
if(!v[i] && maze[r][i] == '#')
{
v[i] = 1;
dfs(r+1, num+1);
v[i] = 0;
}
}
dfs(r+1, num); //r列没有摆棋子。
}

int main()
{
while(~scanf("%d%d", &n, &k))
{
if(n == -1 && k == -1) break;
for(int i = 0; i < n; i++)
{
scanf("%s", maze[i]);
}
memset(v, 0, sizeof(v));
cnt = 0;
dfs(0, 0);
printf("%d\n", cnt);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: