当前位置:首页 » 操作系统 » 算法入门兔子

算法入门兔子

发布时间: 2023-12-08 09:22:05

Ⅰ 经典算法题之兔子问题

就是那个递归算法:f(1)=1;f(2)=1;f(3)=2;...f(n)=f(n-1)+f(n-2);程序是:(计算任一月兔子数)long fun(int x){ int i; if(x==1 || x==2) return 1; else return fun(x-1)+fun(x-2);}void main(){ int i,a; long s; scanf("%d",&a); printf("%ld\n",fun(a)); }

Ⅱ 生兔子的经典编程算法

一般而言,兔子在出生两个月后,就有繁殖能力,一对兔子每个月能生出一对小兔子来。如果所有兔都不死,那么一年以后可以繁殖多少对兔子?
1 1月
1 2月
2 3月
3 4月
5 5月
8 6月
13 7月
21 8月
34 9月
55 10月
89 11月
144 12月
233 13月

第1种:

Private Sub Command1_Click()
i = 0
x = 1
y = 1
b = x & "," & y
For n = 3 To 13 Step 1
i = x + y
x = y
y = i
b = b & "," & i
Next
Print b
End Sub

这个算法是最经典的。其实a月的数量也就是老兔子加上新生兔子。老兔子这么算的:因为当月的生产数量为上个月的兔子总数,而这个生产数量就是由老兔子生的。所以老兔子的数量就是a-1月的数量也就是上一个月的数量。新兔子这么算的:因为新兔子就是上一个月的繁殖数量,即a-1月的繁殖数量,而这个繁殖数量就是由a-2月的总数决定的,所以新兔子就是a-2月了。所以根据这个原理,第一种方法成立。

第2种:

Private Sub Command1_Click()
i = 0
x = 1
y = 1
z = 2
b = x & "," & y & "," & z
For n = 4 To 13 Step 1
i = y * 2 + x
x = y
y = z
z = i
b = b & "," & i
Next
Print b
End Sub

第2种算法的逻辑是:

(a月-2的月总数)* 2 + (a月-3月总数)

因为当月的生产数量为上个月的兔子总数,而当月的新兔子(即上个月新生的兔子,这个月还未能生产)数量为上上个月的总数。

第3种:

Private Sub Command1_Click()
i = 0
x = 1
y = 1
z = 2
b = x & "," & y & "," & z
For n = 4 To 13 Step 1
i = z * 2 - x
x = y
y = z
z = i
b = b & "," & i
Next
Print b
End Sub

(a月总数*2) - (a-2月总数)

这第2种算法和第3种算法是基于第一种算法的原理的。只不过实在太复杂了,我自己脑子里只能粗略整理它的逻辑关系(其实也不是很懂),所以写出来大家一定看不懂。。。

后记:这个经典的兔子数列其实还可以继续玩下去。有非常复杂的递推关系(自己说的,虽然没学过什么叫真正的递推不过应该差不多吧)。每个参数影响非常复杂。我本来想继续这个混乱的递推逻辑,但想到再复杂的算法的时候我差不多都要疯掉了。。啊啊啊,暂时就这样吧~~~大脑休息下。熄火。

Ⅲ 鸡兔同笼的简便算法

最简单的算法
(总脚数-总头数×鸡的脚数)÷(兔的脚数-鸡的脚数)=兔的只数
(94-35×2)÷2=12(兔子数) 总头数(35)-兔子数(12)=鸡数(23)
让兔子和鸡同时抬起两只脚,这样笼子里的脚就减少了头数×2只,由于鸡只有2只脚,所以笼子里只剩下兔子的两只脚,再÷2就是兔子数。
假设法
假设全是鸡:2×35=70(只)
鸡脚比总脚数少:94-70=24 (只)
兔:24÷(4-2)=12 (只)
鸡:35-12=23(只)
假设法(通俗)
假设鸡和兔子都抬起一只脚,笼中站立的脚:
94-35=59(只)
然后再抬起一只脚,这时候鸡两只脚都抬起来就摔倒了,只剩下用两只脚站立的兔子,站立脚:
59-35=24(只)
兔:
24÷2=12(只)
鸡:
35-12=23(只)
假设全是兔:4×35=140(只)
如果假设全是兔那么兔脚比总数多:140-94=46(只)
鸡:46÷(4-2)=23(只)
兔:35-23=12(只)
方程法
1、一元一次方程
设兔有x只,则鸡有(35-x)只.
4x+2(35-x)=94
4x+70-2x=94
2x=94-70
2x=24
x=24÷2
x=12
35-12=23(只)
或 设鸡有x只,则兔有(35-x)只.
2x+4(35-x)=94
2x+140-4x=94
2x=46
x=23
35-23=12(只)
答:兔子有12只,鸡有23只.
注:通常设方程时,选择腿的只数多的动物,会在套用到其他类似鸡兔同笼的问题上,好算一些.
2、二元一次方程
设鸡有x只,兔有y只.
x+y=35
2x+4y=94
(x+y=35)×2=2x+2y=70
(2x+2y=70)-(2x+4y=94)=(2y=24)
y=12
把y=12代入(x+y=35)
x+12=35
x=35-12(只)
x=23(只).
答:兔子有12只,鸡有23只.抬腿法
方法一
假如让鸡抬起一只脚,兔子抬起2只脚,还有94÷2=47(只)脚。笼子里的兔就比鸡的脚数多1,这时,脚与头的总数之差47-35=12,就是兔子的只数。
方法二
假如鸡与兔子都抬起两只脚,还剩下94-35×2=24只脚,这时鸡是屁股坐在地上,地上只有兔子的脚,而且每只兔子有两只脚在地上,所以有24÷2=12只兔子,就有35-12=23只鸡。
方法三
我们可以先让兔子都抬起2只脚,那么现在就有35×2=70只脚,现在的脚数和原来差94-70=24只脚,这些都是每只兔子抬起2只脚,一共抬起24只脚,用24÷2得到兔子有12只,用35-12得到鸡有23只。

热点内容
奇骏哪个配置性价比 发布:2024-11-29 22:25:21 浏览:702
汉娜数据库 发布:2024-11-29 22:25:17 浏览:703
服务器和收银机怎么连接 发布:2024-11-29 22:24:11 浏览:608
关键词排名源码 发布:2024-11-29 22:22:03 浏览:72
禅道服务器ip是什么 发布:2024-11-29 22:22:02 浏览:808
参贪心算法 发布:2024-11-29 21:54:24 浏览:340
php统计数组元素 发布:2024-11-29 21:46:08 浏览:195
健康和解压哪个重要 发布:2024-11-29 21:40:07 浏览:749
联通网的密码去哪里找 发布:2024-11-29 21:38:57 浏览:849
jscookie加密 发布:2024-11-29 21:33:03 浏览:40