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;

    }
}
上一篇:机器学习技法笔记:11 Gradient Boosted Decision Tree


下一篇:11-STM32+CH395Q(以太网)基本控制篇(自建物联网平台)-MQTT服务器配置SSL单向认证(Linux系统)