大漠駝鈴

          置身浩瀚的沙漠,方向最為重要,希望此blog能向大漠駝鈴一樣,給我方向和指引。
          Java,Php,Shell,Python,服務器運維,大數據,SEO, 網站開發、運維,云服務技術支持,IM服務供應商, FreeSwitch搭建,技術支持等. 技術討論QQ群:428622099
          隨筆 - 238, 文章 - 3, 評論 - 117, 引用 - 0
          數據加載中……

          經典的農夫養牛問題

          一個農夫養了一頭牛,三年后,這頭牛每年會生出1頭牛,生出來的牛三年后,又可以每年生出一頭牛……問農夫10年后有多少頭牛?n年呢?(用JAVA實現)
          很有名的一道題,11樓放出最經典的兩種解題思路,大家先試試
             1.

                    
          package cn.edu.nankai;
                    
          import java.util.HashSet;
                    
          import java.util.Set;

                    
          class Cow
                    {
                    
          private int age;

                    
          public Cow()
                    {
                    age 
          = 0;
                    }

                    
          public Cow bearCow()//生小牛
                    {
                    
          return new Cow();
                    }

                    
          public void grow()//每年牛齡加1
                    {
                    age 
          = age + 1;
                    }

                    
          public int getAge()
                    {
                    
          return age;
                    }
                    }
                    
          public class Main {
                    
          private static Set cowSet = new HashSet ();//牛圈,存放所有的牛

                    
          public static int check()//每年檢測一遍所有的牛,年齡要加一,并且夠歲數了要生效牛
                    {
                    Set newCowSet 
          = new HashSet ();
                    
          for(Cow cow : cowSet)
                    {
                    cow.grow();
          //年齡加一
                    if(cow.getAge() >= 3)
                    newCowSet.add(cow.bearCow());
          //夠歲數的生小牛
                    }
                    cowSet.addAll(newCowSet);
          //把所有生出來的小牛放牛圈里
                    return cowSet.size();
                    }
                    
          public static void main(String args[])
                    {
                    Cow cow 
          = new Cow();
                    cowSet.add(cow);
                    
          for(int i = 0; i < 10; i ++)
                    {
                    System.out.println(i
          +1 + " : " + check());
                    }
                    }

                    }
                    回復評論
                    刪除

             
          1.
                Smith的頭像     

                Smith 
          2009/10/31 21:12
                    
          public class Cow {
                    
          public static int coun = 1;

                    
          public static void main(String args[]) {
                    
          new Cow().cowY(10);
                    System.out.println(coun);
                    
          //System.out.println(Cow.getNum(10));
                    }


                    
          public static int getNum(int i) {
                    
          if (i < 3) {
                    
          return 1;
                    } 
          else {
                    
          return getNum(i - 1+ getNum(i - 2);

                    }

                    }
                    
          public void cowY(int year) {
                    
          int age = 1;
                    
          while (age <= year) {
                    age
          ++;
                    
          if (age <= year && age >= 3) {
                    coun
          ++;
                    cowY(year 
          - age);
                    }
                    }
                    }
                    }

          posted on 2009-10-31 22:25 草原上的駱駝 閱讀(489) 評論(1)  編輯  收藏 所屬分類: JAVA基礎知識

          評論

          # re: 經典的農夫養牛問題  回復  更多評論   

          沒看到11樓,轉帖別人的東西至少說明是轉帖,然后給出原文地址吧。

          不厚道!
          2009-11-01 20:32 | CoderDream
          主站蜘蛛池模板: 普洱| 金坛市| 新宾| 米脂县| 天柱县| 宁蒗| 海安县| 穆棱市| 定南县| 鞍山市| 杂多县| 攀枝花市| 彭泽县| 普兰店市| 佛坪县| 云南省| 烟台市| 奇台县| 遵义市| 霍州市| 谢通门县| 南汇区| 合作市| 孙吴县| 西青区| 介休市| 灵宝市| 广元市| 库尔勒市| 桐城市| 高淳县| 扶沟县| 龙游县| 揭西县| 安陆市| 石首市| 林口县| 闻喜县| 甘泉县| 连城县| 西乌珠穆沁旗|