2024年5月1日发(作者:)
一、题目描述
我国古代数学家张丘建在《算经》一书中曾提出过著名的“百钱买百鸡”问题,
该问题叙述如下:鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一;百钱买
百鸡,则翁、母、雏各几何?
翻译过来,意思是公鸡一个五块钱,母鸡一个三块钱,小鸡三个一块钱,现在要
用一百块钱买一百只鸡,问公鸡、母鸡、小鸡各多少只?
二、解题思路
对n=100的情况,因为有三个变量,则有三重循环和二重循环两种算法
1、算法一:三重循环
(1)变量变化范围的确定:由于公鸡5钱一只,则100钱最多可购买100/5=20
只公鸡,此即为第一个变量的变化上限;由于母鸡3钱一只,则100钱最多可购
买100/3≈33只母鸡,此即为第二个变量的变化上限;由于小鸡三只一钱,而所
有鸡的总数不得超过100只,则100即为第三个变量的变化上限;
(2)条件的控制:由百钱买百鸡可知,鸡的数量为100只,买鸡所用的钱数为
100钱,即控制条件为a+b+c=100且a*5+b*3+c/3=100;
2、二重循环:
(1)变量变化范围的确定:由于整题共有3个变量,所以当前两个变量确定后,
第三个变量自然被确定下来,故可采用二重循环解题。前两个变量的确定同三重
循环,第三个变量则用c=n-a-b来确定;
(2)条件的控制:由百钱买百鸡可知,鸡的数量为100只,买鸡所用的钱数为
100钱,即控制条件为a+b+c=100且a*5+b*3+c/3=100;
由于需要讨论算法的时间性能,在程序中加入时间函数计算程序运行所需的时间
进行比较。用控制变量的方法,对两种算法中的n进行同样的变化处理,来讨论
两种算法的时间性能,e.g.分别令n=100,n=200,n=500,n=1000,n=2000,n=5000
三、自我评估、反思
由于较长时间未使用C语言编程,所以在使用语法上略显生疏了些,通过这次作
业的实践过程,对C语言的编程语法规则熟悉了许多,虽然在运行过程中出现了
一些错误,但也都能够较快地解决,第一次的数据结构实验作业总体完成的还算
比较顺利。
个人认为我还需要更多的练习以熟悉数据结构的实验操作,争取在下次的实验中
更加熟练,有效率。
四、实验结果截图
1、算法一:三重循环
(1)n=100
(2)n=200
(3)n=500
(4)n=1000
(5)n=2000
(6)n=5000
2、算法二:二重循环
(1)n=100
(2)
n=200
(3)n=500
(4)n=1000
(5)n=2000
(6)n=5000
3、两种算法的时间性能比较
两种算法时间性能比较
30
25
20
15
10
5
0
100 200 500
三重循环
1000
二重循环
2000 5000
总结:由比较折线图可知,当n的值较小时,两种算法用时相差不远,随n的值
增大,两者用时差异越大,总体上,二重循环用时较少,时间性能较好。
发布者:admin,转转请注明出处:http://www.yc00.com/news/1714573251a2472688.html
评论列表(0条)