做动态规划做的伤心了,找点水题找自信。
cur表示当前搜索到哪一行了,book数组用于标记列
#include <iostream>
#include <cstring>
using namespace std;
int n,k,res;
int book[10];
char Map[10][10];
void DFS(int cur, int num)
{
if(num == k)
{
++res;
return;
}
for(int i = cur; i < n; ++i)
{
for(int j = 0; j < n; ++j)
{
if(Map[i][j] == '#' && book[j] == 0)
{
book[j] = 1;
DFS(i+1,num+1);
book[j] = 0;
}
}
}
}
int main()
{
while(cin >> n >> k && n != -1 && k != -1)
{
res = 0;
memset(book, 0, sizeof(book));
for(int i = 0; i < n; ++i)
for(int j = 0; j < n; ++j)
cin >> Map[i][j];
DFS(0,0);
cout << res << endl;
}
return 0;
}