题目描述
百元百鸡问题。每只母鸡3元,每只公鸡4元,每只小鸡0.5元,如果花100元钱买100只鸡,请问有哪些可能?试编程输出所有的组合。【注:每种鸡的数量都可以为零】
输入
无
输出
输出购买方案
每一种方案输出占一行,且每行按照母鸡,公鸡,小鸡的次序输出
然后行按照母鸡数量由小到大的次序输出。
例如:
x1 x2 x3
y1 y2 y3
z1 z2 z3
其中 x1 < y1 < z1
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
#define ll long long
#define N 150
using namespace std;
typedef struct //按照母鸡数量由小到大的次序输出,遇到这种适合用结构体变量接着sort排序,这题并不是很典型,ABC+DEF=GHI那题很典型
{
int x,y,z;
}Node;
Node s[N];//注意开数组最后排序
int num=0;
bool cmp(Node a,Node b)//存在s数组中的元素就是Node类型,这样写即可
{
return a.x<b.x;
}
void Find()
{
int num1,num2,num3;
for(num1=0;3*num1<=100;num1++)
for(num2=0;4*num2<=100;num2++)
for(num3=0;num3/2.0+num1*3+num2*4<=100;num3++)
if(num1+num2+num3==100&&num1*3+num2*4+num3/2.0==100)
{
s[num].x=num1;
s[num].y=num2;
s[num].z=num3;
num++;
}
}
int main()
{
Find();
sort(s,s+num,cmp);//快速排序
for(int i=0;i<num;i++)
cout<<s[i].x<<" "<<s[i].y<<" "<<s[i].z<<endl;
return 0;
}