欢迎关注本专栏《C++从零基础到信奥赛入门级(CSP-J)》
问题:1022. 百钱百鸡问题
类型:嵌套穷举
题目描述:
用 100 元钱买 100 只鸡,公鸡,母鸡,小鸡都要有。
公鸡 5 元 1 只,母鸡 3 元 1 只,小鸡 1 元 3 只。
请问公鸡,母鸡,小鸡各应该买多少只?
输入:
无。
输出:
每种买法占一行,由 3 个数组成,顺序为 公鸡数 母鸡数 小鸡数。每个数字空格隔开。
输出时,按公鸡数从少到多,母鸡数从多到少的顺序输出,本题符合条件的第一组解为: 4 18 78 。
样例:
输入:
输出:
完整代码如下:
#include<bits/stdc++.h>
using namespace std;
int main(){
//一、分析问题
//已知:用 100 元钱买 100 只鸡,公鸡 5 元 1 只,母鸡 3 元 1 只,小鸡 1 元 3 只。
//未知:找出所有解:公鸡,母鸡,小鸡各应该买多少只?
//关系: 公鸡,母鸡,小鸡都要有,按公鸡数从少到多,母鸡数从多到少的顺序输出。
//二、定义变量(已知、未知、关系)
int g=1,m,x;
//三、输入已知
//四、根据关系计算
for(;g<=(100-3-1)/5;g++){
m=(100-5*g-1)/3;
for(;m>=1;m--){
x=3*(100-5*g-3*m);
//五、输出未知
if(g+m+x==100){
cout<<g<<" "<<m<<" "<<x<<"\n";
}
}
}
return 0;
}