1088: [SCOI2005]扫雷Mine

本文介绍了一种解决特定雷区计数问题的算法。通过枚举初始状态并使用深度优先搜索来确定所有可行的配置,该算法能有效地计算出n行2列网格中可能的布局数量,其中第二列无雷。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目链接

题目大意:n行2列的格子,第二列没有雷,求方案数

题解:考虑到第二列每个格子的数字由第一列三个格子决定(设第一列第0行无雷),可以枚举第一行,这样就可以依次决定每一行

我的收获:部分枚举

#include <iostream>
#include <cstdio>
using namespace std;
const int M=10005;

int n,ans,v[M];

void dfs(int x,int s,int d)//当前行,上一行
{
    if(d==n&&x+s==v[n]){ans++;return ;}//特判最后一行
    if(v[d]-x-s==0||v[d]-x-s==1) dfs(v[d]-x-s,x,d+1);//满足才继续
}

void work()
{
    for(int i=0;i<=v[1];i++)
        dfs(i,0,1);
    printf("%d\n",ans);
}

void init()
{
    cin>>n;
    for(int i=1;i<=n;i++)
        scanf("%d",&v[i]);
}

int main()
{
    init();
    work();
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值