模拟兔子繁殖过程

统计每个月兔子的总数

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

另类解法(突发奇想):模拟兔子的繁殖过程,不使用递推式,不递归
注意:需要读懂题,例如:第一只兔子一二月不会生产(即满两个月才会生产),第三个月会生产一直兔子,第三个月过去那只小兔子也会满一个月。

/**
 * 计算兔子的数量
 */
public class Test37 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()) {
            int month = scanner.nextInt();

            //1.初始时农场有一只年龄为0的兔子
            ArrayList<Rabbit> farm = new ArrayList<>();
            Rabbit rabbit = new Rabbit(0);
            farm.add(rabbit);

            //2.每过去一个月:在这一个月*里面*,满了两个月的兔子会生产,同时它们的年龄会增加
            for (int i = 0; i < month; i++) {
                int n = farm.size();
                for (int j = 0; j < n; j++) {
                    Rabbit rabbit1 = farm.get(j);
                    if (rabbit1.getAge() >= 2) {
                        farm.add(new Rabbit(1));//这里是1不是0,需要注意。因为这个月过去了小兔子也满一个月了
                    }
                    rabbit1.setAge(rabbit1.getAge() + 1);
                }
            }
            //得到兔子的总数
            int number = farm.size();
            System.out.println(number);
        }
    }

    /**
     * 兔子类
     */
    static class Rabbit {
        private int age;

        public Rabbit(int age) {
            this.age = age;
        }

        public int getAge() {
            return age;
        }

        public void setAge(int age) {
            this.age = age;
        }
    }
}
全部评论
回归本源,面向对象,赞
1 回复 分享
发布于 2021-03-25 22:23
以空间换时间 👍
点赞 回复 分享
发布于 2021-05-26 00:15
牛!看懂了!
点赞 回复 分享
发布于 2021-06-17 10:25
内存不炸?
点赞 回复 分享
发布于 07-20 11:47 江苏

相关推荐

点赞 评论 收藏
分享
46 6 评论
分享
牛客网
牛客企业服务