用 100 元钱买 100 只鸡,公鸡,母鸡,小鸡都要有。
公鸡 5 元 1 只,母鸡 3 元 1 只,小鸡 1 元 3 只。
请问公鸡,母鸡,小鸡各应该买多少只?
1.分析问题
- 已知:共有100元,买100只鸡,公鸡5元1只,母鸡3元1只,小鸡1元3只
- 未知:公鸡g只,母鸡m只,小鸡x只
- 关系:5g+3m+x/3=100,g+m+x=100.
2.定义变量
根据分析的已知,未知按需要定义变量。
//二、数据定义
int money=100,g=1,m=1,x=3;
3.输入数据
无。
4.数据计算
4.1 确定问题的范围:根据问题的要求,确定需要尝试的数值范围。
钱:100。
鸡总数:100。
公鸡:最少1只,最多:(100-3-1)/5只。
母鸡:最少1只,最多:总钱数-已买公鸡数量 * 5 - 最少小鸡,即(money-5*g-1)/3只。
4.2 使用循环进行穷举:使用循环结构(如for循环)遍历范围内的每个数值。
g:公鸡的数量。
while(g<=(100-3-1)/5){
g++;
}
4.3 将数值带入问题中进行尝试:将当前数值带入问题中,判断是否满足问题的条件。
m:母鸡的数量。
母鸡数从多到少。
扫描二维码关注公众号,回复:
17336683 查看本文章
//四、数据计算
//输出时,按公鸡数从少到多,母鸡数从多到少的顺序输出
while(g<=(100-3-1)/5){
//母鸡最多数量
m=(money-5*g-1)/3;
while(m>1){
x=(money-g*5-m*3)*3;
if(g+m+x==100){
}
m--;
}
g++;
}
4.4 如果满足条件,输出结果或进行其他操作。如果当前数值满足问题的条件,可以输出该数值作为问题的解,或进行其他操作。
//四、数据计算
//输出时,按公鸡数从少到多,母鸡数从多到少的顺序输出
while(g<=(100-3-1)/5){
//母鸡最多数量
m=(money-5*g-1)/3;
while(m>1){
x=(money-g*5-m*3)*3;
if(g+m+x==100){
//五、输出结果
cout<<g<<" "<<m<<" "<<x<<endl;
}
m--;
}
g++;
}
4.5 继续循环直到穷举完所有可能的解。
5.输出结果
#include<iostream>
using namespace std;
int main(){
//一、分析问题
//已知:共有100元,买100只鸡,公鸡5元1只,母鸡3元1只,小鸡1元3只
//未知:公鸡g只,母鸡m只,小鸡x只
//二、数据定义
int money=100,g=1,m=1,x=3;
//三、数据输入
//四、数据计算
//输出时,按公鸡数从少到多,母鸡数从多到少的顺序输出
while(g<=(100-3-1)/5){
//母鸡最多数量
m=(money-5*g-1)/3;
while(m>1){
x=(money-g*5-m*3)*3;
if(g+m+x==100){
//五、输出结果
cout<<g<<" "<<m<<" "<<x<<endl;
}
m--;
}
g++;
}
return 0;
}