笔试题:代码如何实现“百钱买百鸡”?
关注“Java 后端技术全栈”**
回复“面试”获取全套大厂面试资料
百钱买百鸡是一个非常经典的不定方程问题,最早源于我国古代的《算经》,这是古代著名数学家张丘建首次提出的。在笔试题中出现频率也也非常高,所以今天咱们就来聊来这个很有意思的算法题。
百钱买百鸡问题的原文如下:
鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问翁、母、雏各几何?
这个问题的大致意思是公鸡 5 块钱 1 只,母鸡 3 块钱 1 只,小鸡 3 只 1 块钱,如果用 100 块钱买 100 只鸡,那么公鸡、母鸡和小鸡各应该买多少只呢?
理清思路
百钱买百鸡问题中,两大变量:总钱数量和总鸡数量
总鸡数量可分为三个变量:公鸡数量、母鸡数量和小鸡数量,分别设为 x、y 和 z。
这三者应该满足如下关系:
x+y+z=总鸡数量
5x+3y+z/3=总钱数量
这里有三个变量,两个方程,因此是一个不定方程问题。这将导致求解的结果不只一个。可以根据上述两个方程来求出所有可能的结果。
代码实现
复制代码
输出:
复制代码
输入参数 m 为钱数,输入参数 n 为购买的鸡数。程序中,通过两层循环来穷尽公鸡数量和母鸡数量,然后在 if 语句中判断是否满足方程的条件。如果满足条件,则表示是一种解,将其输出。
ok,今天的算法题就到这里。小小乐趣!
推荐阅读
面试问你Spring如何解决循环依赖的时候,不要一脸懵逼了!
版权声明: 本文为 InfoQ 作者【田维常】的原创文章。
原文链接:【http://xie.infoq.cn/article/0fcea1f8b2401dba6e5d4c3a3】。文章转载请联系作者。
评论