POJ 1321

来源:互联网 发布:学python要多久 编辑:程序博客网 时间:2024/05/17 22:15

DFS水题。。。。就是把皇后问题的升级版,就是多一个起始行的问题。。。

#include<stdio.h>#include<string.h>char map[9][9];int judge[9];int n,k;int ans;void dfs(int dep,int num){    if(dep>=n){        if(num==k) ans++;        return;    }    if(num==k){        ans++;    return;    }    for(int i=0;i<n;i++){        if(map[dep][i]=='#'&&judge[i]==0){                judge[i]=1;                //map[dep][i]='.';                dfs(dep+1,num+1);                //map[dep][i]='#';                judge[i]=0;            }    }    dfs(dep+1,num);    return ;}int main(){    while(scanf("%d%d",&n,&k)!=EOF){            if(n==-1&&k==-1) break;            memset(judge,0,sizeof(judge));        for(int i=0;i<n;i++) scanf("%s",map[i]);            ans=0;            for(int i=0;i<n;i++){                if((n-i+1)<k) break;                for(int j=0;j<n;j++){                if(map[i][j]=='#'&&i<=n-1){                judge[j]=1;                dfs(i+1,1);                judge[j]=0;                    }                }            }            printf("%d\n",ans);    }    return 0;}


 

0 0
原创粉丝点击