`
javasee
  • 浏览: 959011 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

经典的农夫养牛问题

 
阅读更多

一个农夫养了一头牛,三年后,这头牛每年会生出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);
          }
          }
          }
          }
2
7
分享到:
评论

相关推荐

    经典的农夫养牛问题(面向对象和递归)

    在编程领域,经典的问题往往能够激发我们思考不同的解决策略,"农夫养牛问题"就是这样一道题。问题的核心是计算在一定年数后,一头牛繁殖的后代总数,假设每头牛三年后开始生育,每年生育一头牛,并且新生的小牛同样...

    农夫养牛问题java解决

    一个农夫养了一头牛,三年后,这头牛每年会生出1头牛,生出来的牛三年后,又可以每年生出一头牛 //……问农夫10年后有多少头牛?n年呢?

    农夫养牛问题几种解法源码

    这个"农夫养牛问题"是一个典型的数学与编程相结合的问题,它涉及到递归和指数增长的概念。在这个问题中,农夫有一头牛,这头牛在第三年之后每年会生出一头新的牛,而新生的牛在经历三年同样会每年生出一头牛。我们要...

    农夫过河问题的算法与实现.doc

    农夫过河问题的算法与实现 农夫过河问题是指农夫带一只狼、一只羊和一棵白菜在河南岸,需要安全运到北岸。这类问题的实质是系统的状态问题,要寻求的是从初始状态经一系列的安全状态到达系统的终止状态的一条路径。...

    农夫过河问题,经典数据结构

    农夫过河问题是一个经典的逻辑谜题,也常被用作介绍和实践数据结构及算法的案例。问题背景是这样的:一个农夫需要将自己、一只狼、一只羊和一捆白菜运过一条河,但他只有一条小船,每次只能载他自己和一件物品过河。...

    农夫过河问题【代码+流程图+可执行文件】

    《农夫过河问题:深度优先遍历图的解决方案》 农夫过河问题是一个经典的逻辑谜题,它涉及到在有限的资源和条件...通过理解和实现这个经典问题的解决方案,我们可以更好地掌握这些基础概念,并将其应用于更广泛的领域。

    农夫过河问题农夫过河问题

    一个农夫带着一只狼、一只羊和一棵白菜,身处河的南岸。他要把这些东西全部运到北岸。他前面只有一条小船,船只能容下他和一件物品,另外只有农夫才能撑船。如果农夫在场,则狼不能吃羊,羊不能吃白菜,否则狼会吃羊...

    基于C++的农夫过河问题算法设计与实现方法

    "基于C++的农夫过河问题算法设计与实现方法" 本文主要介绍了基于C++的农夫过河问题算法设计与实现方法,简单描述了农夫过河问题,并结合实例形式详细分析了基于C++实现农夫过河问题的相关算法实现步骤与操作技巧。 ...

    农夫过河的问题

    "农夫过河"是一个经典的逻辑谜题,它涉及到如何有效地安排运输物品和人物过河的问题。在这个问题中,通常设定有农夫、他的儿子、他的女儿、一只狼、一只羊和一颗白菜,只有一艘小船,且每次只能载两个人或物。问题的...

    数据结构农夫过河问题

    【数据结构农夫过河问题】是一个经典的逻辑与算法题目,涉及到广度优先搜索(BFS)的应用。问题的核心在于如何安全地通过一系列操作将狼、羊和白菜都运送到河的对岸,同时保证在农夫不在场时,任何可能导致危险的...

    Java简单实现农夫过河问题示例

    农夫过河问题是计算机科学中的一种经典问题,旨在解决如何将农夫、鱼、狗、猫等物品从一岸运送到另一岸的问题。解决这个问题需要使用算法和数据结构来实现。下面将从Java简单实现农夫过河问题的角度,详细介绍解决这...

    农夫过河问题代码

    农夫过河问题的一种解法.一个在校大学生的课程设计。请斧正!

    数据结构农夫过河问题课设

    在这个“数据结构农夫过河问题课设”中,我们将探讨如何利用C++编程语言和Microsoft Foundation Classes (MFC)框架来解决一个经典的逻辑谜题:农夫过河问题。 农夫过河问题是一个经典的问题,源自中国古代的智力...

    农夫过河问题(C语言)设计

    经典的农夫过河问题。 用1代表狼,2代表羊,3代表白菜。则在河的某一岸边,物体的分布有8种情况: 当两物体在一起并且它们的代码之和为3或5时,将导致相克的情况出现。 设计c语言算法实现过河,并将结果打印

    农夫过河问题源码

    "农夫过河问题"是一个经典的逻辑和算法问题,它源于经典的数学谜题,通常用于面试中的编程测试。这个问题的核心是找到一个有效的方法,使得农夫、猫、狗和鱼能够安全地通过河流,同时避免在农夫不在场时发生猫吃鱼或...

    C++基于人工智能搜索策略解决农夫过河问题示例

    本文实例讲述了C++基于人工智能搜索策略解决农夫过河问题。分享给大家供大家参考,具体如下: 问题描述 一农夫带着一头狼,一只羊和一个白菜过河,小船只能一次装载农夫和一样货物,狼会吃羊,羊会吃白菜,只有农夫...

    农夫过河问题(邻接矩阵、深度遍历算法)解决

    有一农夫带着一条狼,一只羊,一筐菜想过河,农夫每次只能带一件东西,如果没有农夫看管,狼会吃羊,羊吃草,如何设计使得每个东西都能安全过河

    农夫过河问题 数据结构

    一个农夫带着一只狼,一只羊和一棵白菜,身处河的南岸。他要把这些东西全部运到北岸。他面前有一条小船,船只只能容下他和一件东西,另外只有农夫才能撑船。如果农夫在场,则狼不能吃羊,样不能吃白菜否则狼会吃羊,...

    农夫过河问题设计

    里面用到了按位相与的算法来判断农夫、狼、羊、白菜的位置,还有在图中寻找路径的算法

    农夫过河问题求解

    一个农夫带着—只狼、一只羊和—棵白菜,身处河的南岸。他要把这些东西全部运到北岸。他面前只有一条小船,船只能容下他和—件物品,另外只有农夫才能撑船。如果农夫在场,则狼不能吃羊,羊不能吃白菜,否则狼会吃羊...

Global site tag (gtag.js) - Google Analytics