经典枚举 您所在的位置:网站首页 华南主板显示b9是什么意思 经典枚举

经典枚举

2023-04-19 18:15| 来源: 网络整理| 查看: 265

话不多说,先来看问题

【百钱百鸡】

中国数学家张邱建(公元五世纪,其它资料不详)在他的《算经》中提出了著名的“百钱买百鸡”问题:鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一。百钱买百鸡,问翁、母、雏各几何?

你的任务:输出所有可行的方案。

输入格式

输出格式

输出共有若干行:

每行三个整数,相互之间用1个空格隔开,依次为公鸡、母鸡、小鸡的数量。

所有方案,第一优先级按公鸡的数量从小到大排列。

问题分析——

把公鸡、母鸡和小鸡的数量分别设为cock,hen,chicken,百钱百鸡问题就可以转换成解不定方程组的问题。

因此 ,百钱百鸡问题可以根据三层循环的嵌套来实现:第一层控制公鸡的数量,第二层控制母鸡的数量,第三层控制小鸡的数量。

1.根据等式cock+hen+chiken = 100,推出3个循环的可控范围:

公鸡:0~100只

母鸡:0~100只

小鸡:0~100只

三重循环枚举101*101*101 = 1030301次

你以为这就完了?,NO! 这样三重循环有可能会超时!

我们还需要进一步优化

2.根据等式5*cock+3*hen+chicken/3 = 100

公鸡:0~20只

母鸡:0~34只

小鸡:0~100只(虽然百钱可以买三百只,但是题目要求只能买100只)

三重循环须要枚举21*34*101 = 72114次

还可以优化一下(^_−)☆

3.进一步分析得到,小鸡的数量是三的整数倍,否则不可能刚好花一百块钱。因此,小鸡只需按照三的倍数枚举,即:for(chicken = 0  ; chicken



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有