農夫養牛問題

來源:互聯網
上載者:User

在 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()+" 頭牛");}}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.