POJ1321
作者:互联网
简单搜索,DPS基础题
#include <iostream>
#include <string.h>
#include <algorithm>
using namespace std;
char map[20][20];
int visit[20];
int n,k;
int ans;
DPS(int x,int y){
if(y >= k){ans++;return 0;}//若超出范围立刻方案书+1,并层层返回,继续DPS找新方案
for(int i = x;i < n;i++)
for(int j = 0;j < n;j++)
if(!visit[j] && map[i][j] =='#'){
visit[j] = true;
DPS(x + 1,y + 1);
visit[j] = false;
}
return 0;
}
int main()
{
while(cin>>n>>k){
if(n == -1 && k == -1)break;
memset(visit,false,sizeof(visit));
memset(map,false,sizeof(map));
for(int i = 0;i < n;i++)cin>>map[i];
ans = 0;
DPS(0,0);
cout<<ans;
}
}
标签:map,DPS,int,POJ1321,visit,++,ans 来源: https://blog.csdn.net/qq_42937838/article/details/100146515