POJ1321-棋盘问题

来源:互联网 发布:软件开发好学不 编辑:程序博客网 时间:2024/06/10 20:46

题目链接:POJ1321

数据很水,入门题目。

AC代码:

深搜+回溯 要注意回溯的时候,标记要置为0。

#include<stdio.h>#include<string.h>const int maxn=10;char mp[maxn][maxn];int n,k,ans;bool vis[maxn];void dfs(int row,int num){    if(num==k){        ans++;        return;    }    if(row>n) return ;    for(int i=1;i<=n;i++){        if(mp[row][i]=='#'&&!vis[i]){            //num++;            vis[i]=1;            dfs(row+1,num+1);            vis[i]=0;        }    }    dfs(row+1,num);    return;}int main(){    while(scanf("%d%d",&n,&k)==2&&n!=-1){        for(int i=1;i<=n;i++){            scanf("%s",mp[i]+1);        }        //for(int i=1;i<=n;i++) printf("%s\n",mp[i]);        ans=0;        memset(vis,false,sizeof(vis));        dfs(1,0);        printf("%d\n",ans);    }    return 0;}

原创粉丝点击