今天在群中,有人说到这个一个面试题:
一头母牛在3—10岁的时候每年可以生一头小牛,生公牛和母牛的比率是50%,在牛12岁的时候就送入屠宰场买了。现在有一个农夫有1头1岁大的母牛,在母牛3岁的时候就送到附近的农场去配种,请问40年后这个农夫可能会有多少头牛,写出相关的代码或答题思路,最好用面向对象。
polaris将代码(Java实现)写了一下,如有不对的地方欢迎指出。同时也欢迎您给出自己的解法。
package com.polaris.test;
import java.util.*;
/**
* 问题描述:
*
* 一头母牛在3—10岁的时候每年可以生一头小牛,生公牛和母牛的比率是50%,
* 在牛12岁的时候就送入屠宰场买了。现在有一个农夫有1头1岁大的母牛,
* 在母牛3岁的时候就送到附近的农场去配种,请问40年后这个农夫可能会有多少头牛,
* 写出相关的代码或答题思路,最好用面向对象。
* @author polaris http://www.beijixing001.com
* @version 1.0
*/
public class ComputeCattleNum {
// 保存所有母牛
private static List<Cattle> cows = new ArrayList<Cattle>();
// 保存所有当前农夫拥有的牛
private static List<Cattle> cattles = new ArrayList<Cattle>();
public static void main(String[] args) {
// 第一头母牛
Cattle cow = new Cattle(0,3);
cows.add(cow);
// 40年
for(int i=0;i<40;++i) {
// 大于等于12岁的牛送到屠宰场卖掉;同时每年,所有的牛
for(int j=0;j<cattles.size();++j) {
Cattle temp = cattles.get(j);
if(temp.getDead()) {
cattles.remove(temp);
}
// 开始只有一头母猪,年龄不生长
if(i>0) {
cattles.get(j).grow();
}
}
// 母牛生小牛
for(int j=0;j<cows.size();++j) {
Cattle calf = cows.get(j).bear();
if(calf!=null) {
if(calf.getSex()==0)
cows.add(calf);
cattles.add(calf);
}
}
}
System.out.println("40年后农夫拥有" + cattles.size() + "头牛");
}
}
class Cattle {
// 牛的雌雄:0代表雌,1代表雄
private int sex;
// 牛的年龄
private int age;
// 是否卖掉(已死)
private boolean dead = false;
public Cattle(int sex, int age) {
this.sex = sex;
this.age = age;
}
/**
* 生小牛
* @return 生出的小牛
*/
public Cattle bear() {
Cattle calf = null;
if(this.sex==0) {
if(this.age>=3 && this.age<=10) {
calf = new Cattle(random(),0);
} else {
//System.out.println("抱歉,此牛太小或太老,不能生育。");
}
} else {
//System.out.println("有没有搞错,公牛也想让它生小牛?");
}
return calf;
}
private int random() {
return (int)Math.round(Math.random());
}
/**
* 长大一岁,如果当前大于等于12岁,则卖掉
*/
public void grow() {
if(this.age>=12) dead = true;
else this.age++;
}
public int getSex() {
return this.sex;
}
public boolean getDead() {
return this.dead;
}
}
点击此处获得ComputeCattleNum.java类文件
分享到:
相关推荐
前端面试题:前端框架面试题大全; 前端面试题:前端框架面试题大全; 前端面试题:前端框架面试题大全; 前端面试题:前端框架面试题大全; 前端面试题:前端框架面试题大全; 前端面试题:前端框架面试题大全; ...
大数据面试题V3.0完成了。共523道题,679页,46w+字,来源于牛客870+篇面经。 主要分为以下几部分: Hadoop面试题:100道 Zookeeper面试题:21道 Hive面试题:47道 Flume面试题:11道 Kafka面试题:59到 HBase面试题...
大数据面试题V3.0完成了。共523道题,679页,46w+字,来源于牛客870+篇面经。 主要分为以下几部分: Hadoop面试题:100道 Zookeeper面试题:21道 Hive面试题:47道 Flume面试题:11道 Kafka面试题:59到 HBase面试题...
经典面试题:最长公共子序列.html
内容关键词:面试题、面试攻略、编程技巧、技术解析、编程实践、软件开发、系统编程、Rust面试、编程面试、技术博客、编程指导、面试准备、编程学习、技术分享、编程经验、软件开发知识、技术面试、编程面试题 ...
Vue面试题:.txt
前端面试题:前端开发面试题大全,涵盖了HTML、CSS、JavaScript、前端框架和工具等方面; 前端面试题:前端开发面试题大全,涵盖了HTML、CSS、JavaScript、前端框架和工具等方面; 前端面试题:前端开发面试题大全,...
面试题:2的幂次方问题&比特位计数问题.mp4 40.面试题:统计位1的个数.mp4 39.理论讲解:位运算.mp4 38.面试题:二维网格中的单词搜索问题.mp4 37.面试题:实现一个字典树.mp4 36.理论讲解:字典树.mp4 35.面试题:...
六、经典面试题 * 在面试中,候选人需要具备良好的面试技巧和知识点,例如:如何应对面试官的提问、如何展示自己的职业素质和职业目标等。 * 候选人需要具备良好的应变能力和压力管理技巧,以便更好地应对面试中的...
医疗卫生面试真题:卫生类典型面试题汇总及答案(23)借鉴.pdf
http网络面试题:.md
"2021最新大厂AI面试题:Q3版107题(含答案及解析).pdf" 这份面试题目涵盖了多个方面的AI知识点,包括机器学习、深度学习、自然语言处理等领域。下面是从这份面试题目中提取的相关知识点: 机器学习 1. 逻辑回归...
【计算机和JAVA 面试题大全】 在计算机科学与技术领域,尤其是软件开发行业,Java是一种广泛应用的编程语言,以其跨平台、面向对象和高效性而受到赞誉。本资料集涵盖了丰富的Java面试题,旨在帮助求职者准备Java...
Vue面试题:让你在面试中游刃有余.md
蔚来和虾皮的面试题则包含了链表问题、二叉树遍历和数组划分等算法题。这些问题通常需要通过递归或者迭代的方法来解决,并且在面试中要求应聘者能够熟练地写出代码来。 整体来看,这些面试题覆盖了机器学习和深度...
面试题:第一阶段.pages
01_JavaSE面试题:自增变量
Java面试题:Java基础方面的题型,包括问题和答案哦
05_JavaSE面试题:递归与迭代
02_JavaSE面试题:单例设计模式