直接思路:就没有题意了.深搜加回溯.
学会了一个很搞笑的东西,dev C++中count居然是内置类型,太坑了
就这一点搞了很长时间,差点没把电脑砸了;
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
#define N 10
char map[N][N];
int col[N];
int n, m, row[N];
int _count;
void dfs(int r, int k){
int i;
if(k == m){
_count++;
return;
}
if(r > n) return;
for(i = 1; i <= n; i++){
if(!col[i] && map[r][i] == '#'){
col[i] = 1;
dfs(r + 1, k + 1);
col[i] = 0;
}
}
dfs(r + 1, k);
return ;
}
int main()
{
while(cin >> n >> m){
if(n == -1 && m == -1)
break;
_count = 0;
int xi, yi, sum;
xi = yi = sum = 0;
for(int i = 1; i <= n; i++)
for(int j = 1; j <= n; j++){
scanf(" %c", map[i] + j);
if(map[i][j] == '#' && i != xi && j != yi){
sum ++; xi = i; yi = j;
}
}
if(sum < m){ printf("%d\n", 0); continue;}//剪枝
memset(col, 0, sizeof(col));
dfs(1, 0);
printf("%d\n", _count);
}
return 0;
}
poj 1321 深搜
最新推荐文章于 2023-12-23 14:39:50 发布