POJ - 1321 深度优先搜索入门

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
using namespace std;
int book[9],n,m,o;
char map[9][9];
void dfs(int num,int y){
    if(num==m){
        o++;
        return ;
    }
    if(y>n)
    return ;
    for(int i=1;i<=n;i++){
        if(map[y][i]=='#'&&book[i]==0){
            book[i]=1;
            dfs(num+1,y+1);
            book[i]=0;  
        }
    }
    dfs(num,y+1);
}
int main(){
        while(cin>>n>>m&&(n!=-1||m!=-1)){
            o=0;
            memset(book,0,0);
            for(int i=1;i<=n;i++)
                for(int j=1;j<=n;j++)
                    cin>>map[i][j];
            dfs(0,1);
            cout<<o<<endl;
        }
    
    return 0;
}

 

posted @ 2018-03-14 13:17  松手丶明晃晃  阅读(110)  评论(0编辑  收藏  举报