农夫养牛问题

来源:互联网 发布:淘宝客服一般什么待遇 编辑:程序博客网 时间:2024/04/30 11:06

在 http://polaris.blog.51cto.com/1146394/399738 这里看到了一道数学题:

一头母牛在3—10岁的时候每年可以生一头小牛,生公牛和母牛的比率是50%,在牛12岁的时候就送入屠宰场买了。
 现在有一个农夫有1头1岁大的母牛,在母牛3岁的时候就送到附近的农场去配种,请问40年后这个农夫可能会有多少头牛,
  写出相关的代码或答题思路,最好用面向对象。

下面给出我自己写的代码,如果有不对的还请指正~

牛类,Cow.java:

package test.question.niu;public class Cow {int age;char sex;//F母 M公char childSex; //最近生下的孩子的性别public Cow(int age,char sex){this.age=age;this.sex=sex;}public char getChildSex() {return childSex;}public void setChildSex(char childSex) {this.childSex = childSex;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public int getSex() {return sex;}public void setSex(char sex) {this.sex = sex;}}


农夫类,Farmer.java

package test.question.niu;import java.util.ArrayList;import java.util.List;public class Farmer {List<Cow> cowList = new ArrayList<Cow>();public Farmer(){Cow cow = new Cow(1,'F');this.cowList.add(cow);}public void addCow(Cow cow){this.cowList.add(cow);}}

测试类,Test.java

package test.question.niu;import java.util.ArrayList;import java.util.List;/** *  * 一头母牛在3—10岁的时候每年可以生一头小牛,生公牛和母牛的比率是50%,在牛12岁的时候就送入屠宰场买了。 * 现在有一个农夫有1头1岁大的母牛,在母牛3岁的时候就送到附近的农场去配种,请问40年后这个农夫可能会有多少头牛, * 写出相关的代码或答题思路,最好用面向对象。 * */public class Test {public static void main(String args[]){int year = 40;Farmer farmer = new Farmer();for(int i=1;i<=year;i++){ //每一年每头牛都增大一岁for(int j=0;i!=1 && j<farmer.cowList.size();j++){farmer.cowList.get(j).setAge(farmer.cowList.get(j).getAge()+1);}int size = farmer.cowList.size(); //牛群的数量for(int j=0;j<size;j++){Cow cow = farmer.cowList.get(j);if(cow.getAge()>=3 && cow.getAge()<=10 && cow.getSex()=='F'){//满足条件才生小牛//这里每头母牛交替生公牛、母牛,得到概率50%情况下的数值//也可以用(int)Math.round(Math.random())来模拟概率事件,char childSex = cow.getChildSex()=='F'?'M':'F';cow.setChildSex(childSex); //记录最近生下的牛的性别Cow newCow = new Cow(0,childSex);//刚生下来,0岁farmer.cowList.add(newCow);}else if(cow.getAge()>11){ //大于11岁,卖掉farmer.cowList.remove(j);}}}System.out.println("40年后农夫拥有 "+farmer.cowList.size()+" 头牛");}}






原创粉丝点击