您当前的位置: 首页 >  搜索

MangataTS

暂无认证

  • 0浏览

    0关注

    423博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

1321:棋盘问题(深度优先搜索进阶)

MangataTS 发布时间:2020-01-23 11:02:00 ,浏览量:0

题目链接:http://bailian.openjudge.cn/practice/1321?lang=en_US

题意:

  求在一个n*n的矩阵内棋盘内摆放k个棋子的方案,这些棋子不在同一行不在同一列去

思路:可以通过深度优先搜索去搜寻每一行棋子与其他棋子摆放的可能方法数。

代码如下:

#include
#include
#include
using namespace std;
char mp[10][10];
int vis[10];//记录每行棋子是否被搜索过 
int sum,n,k,cnt;
void dfs(int h)
{
    if(cnt==k)
    {
        sum++;//满足条件方案数加一 
        return;
    }
    if(h>k)//边界条件 
    return;
    for(int i=0;i>n>>k)
    {
        if(n==-1&&k==-1)
        break;
        sum=0;//初始化方案数 
        cnt=0;
        memset(vis,0,sizeof vis);
    for(int i=0;imp[i][j];
        }
    }
    dfs(0);//从第一行开始搜索。 
    printf("%d\n",sum);
}
    return 0;
}

小结一下:

  此题是一道经典的深搜题,不过开始做的时候可能不会做,没有思路,多读几遍题,是在不行看看其他博主的博客,这道题还是能AC的。

关注
打赏
1665836431
查看更多评论
立即登录/注册

微信扫码登录

0.0382s