【题解】【递推】——蜜蜂路线

蜜蜂路线

通往洛谷的传送门

题目描述

一只蜜蜂在下图所示的数字蜂房上爬动,已知它只能从标号小的蜂房爬到标号大的相邻蜂房,现在问你:蜜蜂从蜂房 m m m 开始爬到蜂房 n n n m < n m<n m<n,有多少种爬行路线?(备注:题面有误,右上角应为 n − 1 n-1 n1

输入格式

输入 m , n m,n m,n 的值

输出格式

爬行有多少种路线

输入输出样例

输入 #1

1 14

输出 #1

377

提示

对于100%的数据, 1 ≤ M , N ≤ 1000 1 \le M,N\le 1000 1M,N1000

1.思路解析

    跟【题解】——数楼梯差不多。直接放代码。

2.AC代码

#include<bits/stdc++.h>
using namespace std;
struct bigint//定义高精度整形 
{
	int a[300],len;
	bigint(int x=0)
	{
		memset(a,0,sizeof(a));
		if(x==0)
		{
			len=1;
			return;
		}
		for(len=1;x;len++)
		    a[len]=x%10,x/=10;
		len--;
	}
	int &operator[](int x)
	{
		return a[x];
	}
	void print()
	{
		for(int i=len;i>=1;i--)
		    cout<<a[i];
	}
	void flatten(int L)
	{
		len=L;
		for(int i=1;i<=len;i++)
		    a[i+1]+=a[i]/10,a[i]%=10;
		while(!a[len])
		    len--;
	}
	friend bigint operator+(bigint a,bigint b)
	{
		bigint c;
		int _len=max(a.len,b.len);
		for(int i=1;i<=_len;i++)
		    c[i]+=a[i]+b[i];
		c.flatten(_len+1);
		return c;
	}
};
int main()
{
    int m,n;
	bigint f[1010];//f[i]代表到达第i个蜂房的爬行路线种数 
    cin>>m>>n;
    f[m]=f[m+1]=bigint(1);//递推初始化 
    for(int i=m+2;i<=n;i++)//从第m+2个枚举 
        f[i]=f[i-1]+f[i-2];//递推式:f[i]=f[i-1]+f[i-2]
    f[n].print();
	return 0;
}

喜欢就订阅此专辑吧!

【蓝胖子编程教育简介】
蓝胖子编程教育,是一家面向青少年的编程教育平台。平台为全国青少年提供最专业的编程教育服务,包括提供最新最详细的编程相关资讯、最专业的竞赛指导、最合理的课程规划等。本平台利用趣味性和互动性强的教学方式,旨在激发孩子们对编程的兴趣,培养他们的逻辑思维能力和创造力,让孩子们在轻松愉快的氛围中掌握编程知识,为未来科技人才的培养奠定坚实基础。

欢迎扫码关注蓝胖子编程教育
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝胖子教编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值