11.27 递归和植物大战僵尸

Description

这是一题简单的题目,考的只是你的数学而已。我一直都很好奇愚公一家到底有多少人。好吧,毛学姐说你们会帮我的。假设愚公家族 每个人的一生是这样度过的:(当他回首往事的时候。。。开个玩笑,请无视) 头2020年用来生长发育以及挖山,第2121年(可以理解为2121岁的时候)开始 每年生下一个孩子( 自交,任性, 没妻子,全生男,且不考虑死亡),当然还要去挖山。我们默认愚公11岁的时候为第一年(第2121年愚公生下第一胎),求第NN年愚公家族(愚公家族不需要妻子,别考虑太多)有多少人。

Input

有多组测试数据,每组占一行,包括一个数N(0<N<=60)N(0<N<=60),N为第N年。

Output

对于每组测试,输出整数MM,MM为愚公家族的人数
题解:递归问题,前20年都是1个人,从21年开始f(n)=f(n-1)+f(n-20)
代码如下:

#include <stdio.h>
int f(int n)
{
    int ans;
    if(n<=20){
        return 1;
    }
    else if(n>20){
        ans=f(n-1)+f(n-20);
    }
    return ans;
}
int main()
{
    int n;
    while(scanf("%d",&n)!=EOF){
    printf("%d\n",f(n));}
    return 0;
}

加特林大战僵尸

Description

现在又到了毛学姐玩生化危机的时间,问题很简单。现在有一把自动加特林机枪,它每秒发射一颗子弹,子弹的飞行速度是V0 。在它的面前有L米的空地,你可以假设机枪是一个点。现在有个一只僵尸来袭,他以速度V1V
匀速向加特林机枪走去。僵尸被加特林子弹击中n次才会gg,僵尸在走到加特林机枪的位置后,会用酸液对其进行攻击,只需2s就能摧毁加特林。问:强大的加特林机枪能不能守住这块空地呢?

Input

输入包含多组数据,每组包含四个数L,VO,VI,n保证所有数据在int类型范围内。

Output

如果加特林能干掉僵尸,请输出"YES",否则输出"NO"。
题解:只需要在僵尸走到加特林之前射出相应子弹即可,但因为加特林还有两秒的寿命,我们可以把这两秒僵尸走的距离加到L上(L1),这样只需要判断子弹数乘以僵尸速度与L1的大小即可。
代码如下:

#include <stdio.h>
int main()
{
    int l,v0,v1,n;
    int a,b;
    while(scanf("%d %d %d %d",&l,&v0,&v1,&n)!=EOF){
        a=l+2*v1;
        b=n*v1;
        if(a>b){
            printf("YES\n");
        }
        else{
            printf("NO\n");
        }
        a=0;
        b=0;
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_43763889/article/details/84582454
今日推荐