程序设计部分 从现实问题到计算机程序 第2关:百元买百鸡问题

任务描述
本关任务:计算百元买百鸡的方案。

相关知识
百元买百鸡问题
假定小鸡每只5角,公鸡每只2元,母鸡每只3元。现在有100元钱要求买100只鸡,编程列出所有可能的购鸡方案。

问题分析
对于我们人来说,计算所有的购鸡方案虽然不难,但是很繁琐。而计算机的特性就是:不怕啰嗦,因此我们可以编写一个程序,让计算机来干这些粗活重活。

解决这个问题,最简单的办法就是穷举,举出所有可能的组合,然后从中挑选满足条件的组合。既然要穷举,那就要确定一下穷举的大致范围。

我们用a,b,c来表示小鸡,公鸡,母鸡的数量。

小鸡的价格是5角,那么100元最多能买200只小鸡,但我们只要100只,所以小鸡的数量范围是0 - 100。同理,公鸡的数量范围是0 - 50。而对于母鸡的数量,可以按照前述的方法,也可以利用总量是100只这个条件,即母鸡的数量为100 - a - b。

现在可以开始写代码了,首先我们利用for循环来穷举小鸡的数量:

for(int a = 0;a <= 100;a=a+1) //初始值是0,最大值是100
{
    //循环体
}
然后,在每一种小鸡数量的基础上,穷举公鸡的数量,也是使用for循环:

for(int b = 0;b <= 50;b++)
{
    //循环体
}
母鸡的数量则直接利用公式求解:

int c = 100 - a - b;
这里有一个问题,那就是a和b的和有可能会**超过100**,所以我们需要通过条件剔除这种情况:

if(c >= 0)
{
    //只有c不小于0才进行下一步的判断
}
最后,选出满足条件的组合并输出:

if(a*0.5 + b*2 + c*3 == 100)
{
    cout << a << " " << b << " " << c << endl; //输出每种鸡的数量,用空格分隔
}
将上述的代码片段组合在一起,整个程序就完成了。

提示:请仔细思考每段代码之间的相对关系,选择顺序排列或者嵌套组合。

编程要求
请将上述的代码片段组合成一个完整程序,写在右侧编辑器的指定位置。

测试说明
平台会对你编写的代码进行测试:

预期输出:
68 30 2
70 25 5
72 20 8
74 15 11
76 10 14
78 5 17
80 0 20

参考程序:

#include <iostream>

using namespace std;

int main() {
  /**********   Begin   **********/
  for (int a = 0; a <= 100; a++) // 穷举小鸡的数量  
  {
    for (int b = 0; b <= 50; b++) // 穷举公鸡的数量  
    {
      int c = 100 - a - b; // 计算母鸡的数量  
      if (c >= 0) // 确保母鸡的数量不小于0  
      {
        if (a * 0.5 + b * 2 + c * 3 == 100) // 判断总金额是否为100元  
        {
          cout << a << " " << b << " " << c << endl; // 输出每种鸡的数量  
        }
      }
    }
  }
  /**********   End   **********/
  return 0;
}

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值