题目
代码
#include <iostream>
using namespace std;
char a[10][10];
bool vis[10];
int ans;
int n, k;
void chess(int row, int num) {
if (num == k) {
ans++;
return;
}
if (row > n) return;
for (int i = 0; i < n; i++) {
if (!vis[i] && a[row][i] == '#') {
vis[i] = true;
chess(row + 1, num + 1);
vis[i] = false;
}
}
chess(row + 1, num);
}
int main() {
ios::sync_with_stdio(false);
while (cin >> n >> k) {
if (n == -1 && k == -1) break;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cin >> a[i][j];
}
}
for (int i = 0; i < 8; i++) vis[i] = false;
ans = 0;
chess(0, 0);
cout << ans << endl;
}
return 0;
}