Skip to content
Author: lllyouo
Date: 20250812
tag: 简单搜索
link: http://poj.org/problem?id=1321

问题描述

link

分析

参考代码

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;
}