码迷,mamicode.com
首页 > 其他好文 > 详细

棋盘问题 POJ - 1321

时间:2017-07-26 10:44:38      阅读:255      评论:0      收藏:0      [点我收藏+]

标签:++   问题   size   ring   turn   ==   void   ace   oid   

#include<cstdio>
#include<cstring>
using namespace std;
int n,k,ans;
char Map[20][20],visL[11];   //标记列
void dfs(int step,int i)  // step已放的棋子数, i 当前第几行
{
    if(step==k)
    {
        ans++;
        return;
    }
    if(i>n)return;
    for(int j=1;j<=n;j++)
    {
            if(Map[i][j]==#&&!visL[j])
            {
                visL[j]=1;
                dfs(step+1,i+1);     //i行放棋子
                visL[j]=0;
            }

    }
    dfs(step,i+1);  //i行不放棋子
}
int main()
{
    while(~scanf("%d%d",&n,&k))
    {
        if(n==-1&&k==-1)break;
        for(int i=1;i<=n;i++)
            scanf("%s",Map[i]+1);
        memset(visL,0,sizeof(visL));
        ans=0;
        dfs(0,1);
        printf("%d\n",ans);

    }

    return 0;
}

 

棋盘问题 POJ - 1321

标签:++   问题   size   ring   turn   ==   void   ace   oid   

原文地址:http://www.cnblogs.com/longl/p/7238084.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!