码迷,mamicode.com
首页 > 编程语言 > 详细

算法题目--知识盲区记录一下

时间:2020-11-19 12:35:47      阅读:8      评论:0      收藏:0      [点我收藏+]

标签:public   i++   str   rabbit   变量   ati   tar   rgs   start   

兔子生兔子

问题描述:一对兔子每个月生一对兔子,新兔子在第四个月开始生兔子,以此类推,在24个月之后有多少只兔子

问题分析:第一个月(1对老+1对新),第二个月(1对老+2对新),第三个月(1对老+3对新),第四个月(1对老+(1对老+4对新)),第5个月(1对老+(1对老+(1对老6对新))。三个月之后每个月会有一对老兔子,而每个月会新增老兔子对数的新兔子

代码:

public class C {

    public static void main(String[] args) {
        for (int i = 1; i <= 24; i++) {
            System.out.println(rabbitQuantity(i));
        }
    }

    static int rabbitQuantity(int month) {
        // 将一个月大、二个月大、三个月大和成年兔子分别记录
        int oneMonthRabbit = 0;
        int twoMonthRabbit = 0;
        int threeMonthRabbit = 0;
        int grownUpRabbit = 2;
        int totalRabbit = 0;

        // 每个月兔子长大,一个月大的兔子新增成年兔子的数量,全部兔子总数就是所有年龄兔子的和
        for (int startMonth = 0; startMonth < month; startMonth++) {
            if (threeMonthRabbit > 0) {
                grownUpRabbit += threeMonthRabbit;
                threeMonthRabbit = 0;
            }
            if (twoMonthRabbit > 0) {
                threeMonthRabbit += twoMonthRabbit;
                twoMonthRabbit = 0;
            }
            if (oneMonthRabbit > 0) {
                twoMonthRabbit += oneMonthRabbit;
                oneMonthRabbit = 0;
            }

            oneMonthRabbit += grownUpRabbit;
        }
//        System.out.println(oneMonthRabbit + " " + twoMonthRabbit + " " + threeMonthRabbit + " " + grownUpRabbit);

        totalRabbit = oneMonthRabbit + twoMonthRabbit + threeMonthRabbit + grownUpRabbit;

        return totalRabbit;
    }
}

注:如果间隔月份更大,可以使用数组来保存每个月的兔子数量而不是用变量直接定义

算法题目--知识盲区记录一下

标签:public   i++   str   rabbit   变量   ati   tar   rgs   start   

原文地址:https://www.cnblogs.com/mouseGo/p/13972723.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!