【解题思路】
1到3岁的小牛不生产,只有4岁及以上的大牛才产仔,可见,不同年龄段的母牛有质的差别,
因此,可以用一个标记数组来表示不同年龄段的牛,分别进行操作。
对于本题的情况,不妨声明int cow[4],用其4个元素分别表示1岁、2岁、3岁、4岁或以上的牛,
每到年初,各个牛都会长大1岁,并且长到4岁或以上的母牛会产下一个1岁的牛犊。
【本法优点】
扩展性好。动态分配cow[]即可实现动物在其他任何岁数时生产的情况,并且可以通过初始化cow[]
来任意设置初始状态,而不受限于从一头成熟母牛开始生产的情况。
时间及空间复杂度良好。处理一个值为n的数据的时间复杂度为O(n),空间复杂度为O(1),是常数。
【参考代码】
#include<stdio.h>
int main()
{
int a;
while(~scanf("%d", &a))
{
if(a<=0) break; //读到0则结束
else
{
int cow[4]={0,0,0,1}; //第1年开始时,仅一头4岁以上的成熟母牛
for(int year=1; year<a; year++) //时间按年流逝
{
cow[3]+=cow[2]; //每年初,各年龄段的牛纷纷长大一岁
cow[2]=cow[1];
cow[1]=cow[0];
cow[0]=cow[3]; //成熟了的母牛各产下一头小牛犊
}
printf("%d\n", cow[0]+cow[1]+cow[2]+cow[3] );
}
}
return 0;
}
0.0分
2 人评分
简单的a+b (C语言代码)浏览:652 |
C语言程序设计教程(第三版)课后习题6.4 (C语言代码)浏览:653 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:482 |
【亲和数】 (C语言代码)浏览:600 |
出圈】指针malloc版浏览:355 |
2003年秋浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:518 |
The 3n + 1 problem (C语言代码)浏览:505 |
震宇大神的杀毒软件 (C语言代码)浏览:1080 |
字符串比较 (C语言代码)浏览:685 |
C二级辅导-统计字符 (C语言代码)浏览:648 |