当前位置:网站首页>有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?
有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?
2022-07-07 13:04:00 【乐乐~LL】
输入
输入数据由多个测试实例组成,每个测试实例占一行,包括一个整数n(0<n<55),n的含义如题目中描述。
n=0表示输入数据的结束,不做处理。
输出
对于每个测试实例,输出在第n年的时候母牛的数量。
每个输出占一行。
样例输入复制
2 4 5 0
样例输出复制
2 4 6
代码如下:
两种思路,递归和动态规划
1,递归
递归先考虑递归结束条件--》为当 n==1 的时候 只有一头牛,,return 1
其他情况下:第n年 的牛的数量为:n-1年的数量和 今年新出生的牛的数量
,今年新出生的牛的数量 --就是在今年有生育能力的牛的数量--就是n-3年 时牛的数量
所以又要讨论 n---当 n<=3的时候 有生育能力的牛只有一头,
伪代码:
if (n == 1)
{
return 1;
}
if (n <= 3)
{
return number(n - 1) + 1;
}
else
{
return number(n - 1) + number(n - 3);
}
这个代码没问题但是 容易超时
我们继续考虑
第一年 1头
第二年 2头
第三年 3头
前三年来说都没有新的牛出生,且牛的头数和年份数相等
改进:
if (n <= 3)
{
return n;
}
else
{
return number(n - 1) + number(n - 3);
}
代码如下:
#include<stdio.h>
int number(int n)
{
/*if (n == 1)
{
return 1;
}*/
if (n <= 3)
{
//return number(n - 1) + 1;
return n;
}
else
{
return number(n - 1) + number(n - 3);
}
}
int main()
{
int arr[1000]={0};
int n = 0;
int i = 0;
scanf("%d", &n);
while (n != 0)
{
arr[i] = n;
i++;
scanf("%d", &n);
}
for (i = 0; arr[i] != '\0'; i++) {
printf("%d\n", number(arr[i]));
}
return 0;
}
第二种方法:动态规划---就是找规律
一样--这种比较抽象的题不要去 找 N年对应的牛的个数,,,这样会比较困难,,我们引入一个数组,,存放每年的牛的个数,横向找规律,,本质思路和递归同,
代码如下:
#include<stdio.h>
int main()
{
int arr[1000]={0};
int n = 0;
int i = 1;
scanf("%d", &n);
int max = n;
while (n != 0)
{
arr[i] = n;
i++;
if (n >= max)
{
max = n;
}
scanf("%d", &n);
}
int number[1000] = { 0 };//对应年份牛的个数
for (i = 1; i <= max; i++)
{
if (i <= 3)
{
number[i] = i;
}
else
{
number[i] = number[i - 1] + number[i - 3];
}
}
for (i = 1; arr[i] != '\0'; i++)
{
printf("%d\n", number[arr[i]]);
}
return 0;
}
来看看两个代码的速度(上面的是用 动态规划求解
显然 -----动态规划 ----还是 要快呀
快去用动态规划试试 斐波那契数列吧~!@#¥%……&*(
边栏推荐
- CTFshow,信息搜集:web6
- Es log error appreciation -- allow delete
- 知否|两大风控最重要指标与客群好坏的关系分析
- 8大模块、40个思维模型,打破思维桎梏,满足你工作不同阶段、场景的思维需求,赶紧收藏慢慢学
- With 8 modules and 40 thinking models, you can break the shackles of thinking and meet the thinking needs of different stages and scenes of your work. Collect it quickly and learn it slowly
- 什么是pv和uv? pv、uv
- Jetson AGX Orin CANFD 使用
- How bad can a programmer be? Nima, they are all talents
- 【OBS】RTMPSockBuf_ Fill, remote host closed connection.
- Ctfshow, information collection: Web3
猜你喜欢
防火墙基础之服务器区的防护策略
Jetson AGX Orin CANFD 使用
Five pain points for big companies to open source
Ctfshow, information collection: web1
Bill Gates posted his resume 48 years ago: "it's not as good-looking as yours."
Ctfshow, information collection: Web3
MySQL bit类型解析
上半年晋升 P8 成功,还买了别墅!
Niuke real problem programming - Day11
Summer safety is very important! Emergency safety education enters kindergarten
随机推荐
FFmpeg----图片处理
[today in history] July 7: release of C; Chrome OS came out; "Legend of swordsman" issued
Deformable convolutional dense network for enhancing compressed video quality
"July 2022" Wukong editor update record
Apache multiple component vulnerability disclosure (cve-2022-32533/cve-2022-33980/cve-2021-37839)
Niuke real problem programming - Day17
CTFshow,信息搜集:web14
拜拜了,大厂!今天我就要去厂里
PG基础篇--逻辑结构管理(锁机制--表锁)
Read PG in data warehouse in one article_ stat
Summer safety is very important! Emergency safety education enters kindergarten
What are PV and UV? pv、uv
Comparable and comparator of sorting
How does the database perform dynamic custom sorting?
Spatiotemporal deformable convolution for compressed video quality enhancement (STDF)
6. Electron borderless window and transparent window lock mode setting window icon
Shengteng experience officer Episode 5 notes I
CTFshow,信息搜集:web2
上半年晋升 P8 成功,还买了别墅!
缓冲区溢出保护