题解 | #统计每个月兔子的总数#

统计每个月兔子的总数

http://www.nowcoder.com/practice/1221ec77125d4370833fd3ad5ba72395

import java.util.Scanner;

public class Main{
    public static void main(String[] args){
        int month=0;
        Scanner sc = new Scanner(System.in);

        while (sc.hasNextInt()) { 
        month = sc.nextInt();
        int ct_Adult =0;
        int sum=0;
        int ct_Child1=1;
        int ct_Child2=0;
        int ct_Child3=0;

        for(int i=2;i<=month;i++){
            ct_Child3+=ct_Child2;//本月3阶段兔子总数需累加上个月2阶段兔子数
            ct_Child2=ct_Child1;//本月2阶段兔子总数即为上个月1阶段兔子数
            ct_Child1=ct_Adult;//本月1阶段兔子数即为上个月具有繁殖力的兔子数
            ct_Adult=ct_Child2+ct_Child3;//具有繁殖力的兔子
        }

        sum=ct_Child1+ct_Child2+ct_Child3;

        System.out.println(sum);
        }

    }
}

先上代码。

图片说明

先列出几种情况,寻找规律。按照题意,兔子应该是2月龄怀上的,3月龄产.那么2月龄的兔子和3月龄及以上的兔子 其实都有繁殖能力.这部分有繁殖力的兔子下个月会产生相同数量的小兔子.

每个月兔子的分布情况都会发生变化,3月龄兔子数量=上个月2月龄兔子数量,2月龄兔子数量=上个月1月龄兔子数量.

其实用递归的方式,和斐波那契数列很像,但是为了避免堆栈内存溢出,笔者采用了迭代的方式顺次计算.这个题的测算输入是多组数据,故要用while死循环,不然验证不通过.

全部评论

相关推荐

头像
不愿透露姓名的神秘牛友
03-24 16:20
点赞 评论 收藏
转发
7 收藏 评论
分享
牛客网
牛客企业服务