P2437 蜜蜂路线
P2437 蜜蜂路线
题目描述
一只蜜蜂在下图所示的数字蜂房上爬动,已知它只能从标号小的蜂房爬到标号大的相邻蜂房,现在问你:蜜蜂从蜂房
输入格式
输入
输出格式
爬行有多少种路线
样例
输入
1 14
输出
377
提示
对于100%的数据,
思路一
由题目可知,蜜蜂要想走到
一开始蜜蜂在
- 迭代过程需要每次清空数组
; - 答案可能为
,因此需要特判; - 答案有可能输出第
项和第 项,可以特判。
代码
#include <bits/stdc++.h>
using namespace std;
int m, n, a[1010], b[1010], c[1010], lena, lenb, lenc;
void add()
{
lenc = max(lena, lenb);
for (int i = 1; i <= lenc; i ++ )
{
c[i] += a[i] + b[i];
c[i + 1] = c[i] / 10;
c[i] %= 10;
}
if (c[lenc + 1])
lenc ++;
}
int main()
{
scanf("%d %d", &m, &n);
a[1] = 1;
lena = 1;
b[1] = 1;
lenb = 1;
if (n == 0) // 特殊数据
{
puts("0");
return 0;
}
if (n == m)
{
puts("1");
return 0;
}
if (n == m + 1)
{
puts("1");
return 0;
}
for (int i = m + 2; i <= n - 1; i ++ )
{
add();
memcpy(a, b, sizeof(b));
lena = lenb;
memcpy(b, c, sizeof(c));
lenb = lenc;
memset(c, 0, sizeof(c));
}
add();
for (int i = lenc; i >= 1; i -- )
printf("%d", c[i]);
return 0;
}
思路二
结构体和重载运算符的方式。结构体变量为数组
代码
#include <bits/stdc++.h>
using namespace std;
int m, n;
struct node
{
int len, s[5010];
node()
{
len = 0;
memset(s, 0, sizeof(s));
}
} f[1010];
node operator + (node &a, node &b)
{
node c;
c.len = max(a.len, b.len);
for (int i = 1; i <= c.len; i ++ )
{
c.s[i] += a.s[i] + b.s[i];
c.s[i + 1] = c.s[i] / 10;
c.s[i] %= 10;
}
if (c.s[c.len + 1])
c.len ++;
return c;
}
void print(node a)
{
for (int i = a.len; i >= 1; i -- )
printf("%d", a.s[i]);
}
int main()
{
scanf("%d %d", &m, &n);
if (n == 0)// 特殊数据
{
puts("0");
return 0;
}
f[m].s[1] = 1;
f[m].len = 1;
f[m + 1].s[1] = 1;
f[m + 1].len = 1;
for (int i = m + 2; i <= n; i ++ )
f[i] = f[i - 1] + f[i - 2];
print(f[n]);
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)