解题思路:

首先提取题目主干信息:每年年初生一头母牛 每次生的牛每四年可以生一头牛;

n代表年数 f[n]代表牛数

n=1 f[1]=1; //第一年有一头牛这头牛是最开始的母牛;

n=2 f[2]=2; //最开始那头牛生了一只小牛; (生的第一只牛)

n=3 f[3]=3; //最开始的那头牛生第二只牛;

n=4 f[4]=4; //最开始那只牛生了第三只牛; 现在n=2时生的牛,生长了3年了,明年就可以生多1头牛;

n=5 f[5]=6; 

现在的总牛数是6 因为第二年生的牛生多了一头牛 

所以 f[5]=第一头牛前一年生的总数+(第二头牛生的数+第一头牛生的数);

因为(第二头牛生的数+第一头牛生的数)= 第二年牛的总数

得出f[5]=f[5-1]+f[5-3];

最终得出f[n]=f[n-1]+f[n-3]这个公式

注意事项:

注意最后要return 0;

scanf()!=EOF

参考代码:

#include <stdio.h>

int main(){

int f[56];

f[1]=1;

f[2]=2;

f[3]=3;

f[4]=4;

int i,n;

//for是初始化数组里牛总数

for(i=5;i<55;i++){

f[i]=f[i-1]+f[i-3];

}

//while是查找n=?的时候牛的总数

while(scanf("%d",&n)!=EOF){

if(n!=0){

printf("%d\n",f[n]);

}

}

return 0;


点赞(0)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论