Author: lllyouo
Date: 20250812
tag: 简单搜索
link: http://poj.org/problem?id=1321问题描述
分析
略
参考代码
cpp
#include <iostream>
#include <cstring>
using namespace std;
const int N = 10;
int n, m, col[N], ans;
char g[N][N];
void dfs(int r, int cnt) {
if (cnt == m) {
ans++;
return;
}
if (r >= n) return;
for (int c = 0; c < n; c++) {
if (col[c] == 0 && g[r][c] == '#') {
col[c] = 1;
dfs(r + 1, cnt + 1);
col[c] = 0;
}
}
dfs(r + 1, cnt);
}
int main() {
while (cin >> n >> m) {
if (n == -1 && m == -1) break;
for (int i = 0; i < n; i++) cin >> g[i];
memset(col, 0, sizeof(col));
ans = 0;
dfs(0, 0);
cout << ans << endl;
}
return 0;
}