01
历史故事
张秋俭用一百美元买一百只鸡的问题;
山东临清数学家张秋俭,是公元5世纪著名的数学家。他一生致力于数学的研究,为数学的不断发展和完善做出了巨大贡献。
《张秋俭计算》第38卷。文曰:“今有鸡五值,鸡三值,鸡三值。如果你用一百块钱买一百只鸡,问问鸡,妈妈,小鸡,它们的几何形状是什么?”题中有三个未知数,但只有两个方程是不定方程。
张秋俭对这个问题给出了三组答案:第一组:公鸡四只,母鸡十八只,小鸡七十八只;第二组:公鸡8只,母鸡11只,鸡81只;第三组:公鸡12,母鸡4,鸡84。
02
100元买100只鸡的问题
每只公鸡5元,每只母鸡3元,三只鸡1元。用100块钱买100只鸡,问有多少只公鸡、母鸡和小鸡。
这个问题的答案应该是四组解决方案:
公鸡有0只母鸡有25只鸡有75只
公鸡有4只母鸡有18只鸡有78只
公鸡有8只母鸡有11只鸡有81只
有12只公鸡,4只母鸡和84只鸡
主题链接地址:
https://oj.coding61.com/problem/%E6%9E%9A%E4%B8%BE-20
03
思维分析
假设公鸡、母鸡和鸡的数量分别为mj、gj和xj。按照几百块钱买几百只鸡的规律,可以得到如下不定方程。
(1)gj+mj+xj=100
(2)5*gj+3*mj+1*xj=100
因为“100块钱”是固定值,mj、gj、xj都有一个取值范围。5*gj<。=100,然后是0
首先确定一个变量的值,然后用另外两个值循环来枚举计算机所有可能的结果。这个方法叫做枚举算法。
04
参考代码
05
“数一数马的数量”
“数马”是我们橙OJ上的一个话题,本质上是一百块钱买几百只鸡的问题。
100匹马扛100担,一匹大马扛3担,一匹中马扛2担,两匹小马扛1担。试着写一个计算大中小马数的程序。
类似于上述问题,还需要解决一个三元线性方程组的问题。假设用I,J,k J,K来表示大马,中马,小马的数量,列出方程,未知量的范围确定如下。
(1)i+j+k=100
(2)3i+2j+k=100
其中0
主题链接地址:
https://OJ . coding 61 . com/problem/% E5 % BE % AA % E7 % 8E % AF % E7 % BB % 93% E6 % 9E % 8415
06
项目实践
通过以上两个问题,相信大家对枚举这类不定方程的所有可能性(枚举算法)都有了清晰的认识。你能自己完成类似的问题吗?Orange OJ还有一个题目“校门外的树”,也是一个枚举算法问题。尽量快点做完!
学校大门外的路上有一排长度为l的树,相邻两棵树的间距为1m。我们可以把道路想象成数轴,道路的一端在数轴0的位置,另一端在L的位置;数轴上的每个整数点,即0,1,2,…,L,都有一棵树。
因为路上有些地方要建地铁。这些区域由它们在数轴上的起点和终点表示。已知任何一个区域的起点和终点的坐标都是整数,区域之间可能有重叠部分。现在,这些区域的树(包括区域末端的两棵树)应该被移除。你的任务是计算在所有这些树被移除后,道路上还剩下多少棵树。
尝试自己解决问题:
https://oj.coding61.com/problem/NOIP-P-2005-2
还是没想法?然后你可以看看解说视频:
1.《百钱买百鸡 【MagO第三期】经典枚举算法题:百钱买百鸡》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《百钱买百鸡 【MagO第三期】经典枚举算法题:百钱买百鸡》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/guoji/1229630.html