赵星宇


私信TA

用户名:mengxing

访问量:1405

签 名:

等  级
排  名 56092
经  验 250
参赛次数 0
文章发表 2
年  龄 0
在职情况 学生
学  校 安徽工程大学
专  业

  自我简介:

解题思路:
可以设定四个变量分别代指不同年头的母牛。
程序里所使用的变量代表的意义:
a:一个年头的母牛;
b:二个年头的母牛;
c:三个年头的母牛;
d:四个及以上个年头的母牛。
第一年时d=1,其他的则为0。而之后的每一年,既已设四种年头的母牛数分别为a,b,c,d,则下一年四种年头的母牛数分别是:
一个年头的母牛:d+c;
二个年头的母牛:a;
三个年头的母牛:b;
四个及以上个年头的母牛:d+c。
以此为思路编写的代码如下:
递归法:

#include<stdio.h>
int cow(int a,int b,int c,int d,int n)
{
    n--;
    if(n==0)
    {
         printf("%d\n",a+b+c+d);
         return 0;
    }
    cow(d+c,a,b,d+c,n);
}
int main(){
    int n;
    while(1)
    {
         scanf("%d",&n);
         if(n==0) break;
         cow(0,0,0,1,n);
     }
}

循环法:

#include<stdio.h>
int main(){
    int n,a,b,c,d;
    while (1)
    {
        a=b=c=0;
        d=1;
        scanf("%d",&n);
        if(n==0) break;
        while(--n!=0)
        {
            d=d+c;
            c=b;
            b=a;
            a=d;
        }
    printf("%d\n",a+b+c+d);
    }
}

以上两种方法虽然方法不同,但思路是一样的。

 

0.0分

2 人评分

新上线《蓝桥杯辅导》课程,近五年的蓝桥杯省赛与国赛真题都有,从读题开始理解题意、梳理思路、实现代码再提交评测全过程,可有效提升获奖比例甚至进国赛!课程介绍、试听请猛击这里

  评论区

还可以用数组做,关键是每循环一次,母牛的数目都要记录下来,然后根据输入的n的值,从这些数中提取出答案,代码如下:
#include<stdio.h>
int main()
{
    int a[55]={1,1,2,3,4};
    a[0]=1;
    a[1]=1;
    a[2]=2;
    a[3]=3;
    int n,i,j=0,m,p;
    int b[1000]={0};/*用于存放输入的n对应的结果*/
    for(i=4;i<55;i++)
        a[i]=a[i-1]+a[i-3];
    scanf("%d",&n);
    while(n!=0&&n<55)
    {
        m=a[n];
        b[j]=m;
        j=j+1;
        p=j;/*记录输入次数*/
        scanf("%d",&n);
    }
    for(p=0;p<j;p++)
        printf("%d\n",b[p]);
    return 0;
}
2021-01-27 20:36:46
  • «
  • 1
  • »