大漠駝鈴

          置身浩瀚的沙漠,方向最為重要,希望此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
          主站蜘蛛池模板: 甘德县| 湛江市| 河南省| 津南区| 峨眉山市| 桂平市| 专栏| 天柱县| 德化县| 泸州市| 枣庄市| 罗定市| 潜江市| 嘉黎县| 类乌齐县| 东明县| 华安县| 顺昌县| 日照市| 唐河县| 吉水县| 呼玛县| 文化| 林芝县| 临湘市| 巢湖市| 南皮县| 赤水市| 沅江市| 锡林浩特市| 通江县| 佛学| 陆河县| 历史| 南岸区| 新乐市| 高唐县| 榕江县| 三江| 朝阳县| 胶南市|