一个农夫养了一头牛,三年后,这头牛每年会生出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);
}
}
}
}
分享到:
相关推荐
在编程领域,经典的问题往往能够激发我们思考不同的解决策略,"农夫养牛问题"就是这样一道题。问题的核心是计算在一定年数后,一头牛繁殖的后代总数,假设每头牛三年后开始生育,每年生育一头牛,并且新生的小牛同样...
一个农夫养了一头牛,三年后,这头牛每年会生出1头牛,生出来的牛三年后,又可以每年生出一头牛 //……问农夫10年后有多少头牛?n年呢?
这个"农夫养牛问题"是一个典型的数学与编程相结合的问题,它涉及到递归和指数增长的概念。在这个问题中,农夫有一头牛,这头牛在第三年之后每年会生出一头新的牛,而新生的牛在经历三年同样会每年生出一头牛。我们要...
农夫过河问题的算法与实现 农夫过河问题是指农夫带一只狼、一只羊和一棵白菜在河南岸,需要安全运到北岸。这类问题的实质是系统的状态问题,要寻求的是从初始状态经一系列的安全状态到达系统的终止状态的一条路径。...
农夫过河问题是一个经典的逻辑谜题,也常被用作介绍和实践数据结构及算法的案例。问题背景是这样的:一个农夫需要将自己、一只狼、一只羊和一捆白菜运过一条河,但他只有一条小船,每次只能载他自己和一件物品过河。...
《农夫过河问题:深度优先遍历图的解决方案》 农夫过河问题是一个经典的逻辑谜题,它涉及到在有限的资源和条件...通过理解和实现这个经典问题的解决方案,我们可以更好地掌握这些基础概念,并将其应用于更广泛的领域。
一个农夫带着一只狼、一只羊和一棵白菜,身处河的南岸。他要把这些东西全部运到北岸。他前面只有一条小船,船只能容下他和一件物品,另外只有农夫才能撑船。如果农夫在场,则狼不能吃羊,羊不能吃白菜,否则狼会吃羊...
"基于C++的农夫过河问题算法设计与实现方法" 本文主要介绍了基于C++的农夫过河问题算法设计与实现方法,简单描述了农夫过河问题,并结合实例形式详细分析了基于C++实现农夫过河问题的相关算法实现步骤与操作技巧。 ...
"农夫过河"是一个经典的逻辑谜题,它涉及到如何有效地安排运输物品和人物过河的问题。在这个问题中,通常设定有农夫、他的儿子、他的女儿、一只狼、一只羊和一颗白菜,只有一艘小船,且每次只能载两个人或物。问题的...
【数据结构农夫过河问题】是一个经典的逻辑与算法题目,涉及到广度优先搜索(BFS)的应用。问题的核心在于如何安全地通过一系列操作将狼、羊和白菜都运送到河的对岸,同时保证在农夫不在场时,任何可能导致危险的...
农夫过河问题是计算机科学中的一种经典问题,旨在解决如何将农夫、鱼、狗、猫等物品从一岸运送到另一岸的问题。解决这个问题需要使用算法和数据结构来实现。下面将从Java简单实现农夫过河问题的角度,详细介绍解决这...
农夫过河问题的一种解法.一个在校大学生的课程设计。请斧正!
在这个“数据结构农夫过河问题课设”中,我们将探讨如何利用C++编程语言和Microsoft Foundation Classes (MFC)框架来解决一个经典的逻辑谜题:农夫过河问题。 农夫过河问题是一个经典的问题,源自中国古代的智力...
经典的农夫过河问题。 用1代表狼,2代表羊,3代表白菜。则在河的某一岸边,物体的分布有8种情况: 当两物体在一起并且它们的代码之和为3或5时,将导致相克的情况出现。 设计c语言算法实现过河,并将结果打印
"农夫过河问题"是一个经典的逻辑和算法问题,它源于经典的数学谜题,通常用于面试中的编程测试。这个问题的核心是找到一个有效的方法,使得农夫、猫、狗和鱼能够安全地通过河流,同时避免在农夫不在场时发生猫吃鱼或...
本文实例讲述了C++基于人工智能搜索策略解决农夫过河问题。分享给大家供大家参考,具体如下: 问题描述 一农夫带着一头狼,一只羊和一个白菜过河,小船只能一次装载农夫和一样货物,狼会吃羊,羊会吃白菜,只有农夫...
有一农夫带着一条狼,一只羊,一筐菜想过河,农夫每次只能带一件东西,如果没有农夫看管,狼会吃羊,羊吃草,如何设计使得每个东西都能安全过河
一个农夫带着一只狼,一只羊和一棵白菜,身处河的南岸。他要把这些东西全部运到北岸。他面前有一条小船,船只只能容下他和一件东西,另外只有农夫才能撑船。如果农夫在场,则狼不能吃羊,样不能吃白菜否则狼会吃羊,...
里面用到了按位相与的算法来判断农夫、狼、羊、白菜的位置,还有在图中寻找路径的算法
一个农夫带着—只狼、一只羊和—棵白菜,身处河的南岸。他要把这些东西全部运到北岸。他面前只有一条小船,船只能容下他和—件物品,另外只有农夫才能撑船。如果农夫在场,则狼不能吃羊,羊不能吃白菜,否则狼会吃羊...