百元百鸡 //构造结构体变量

题目描述
百元百鸡问题。每只母鸡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;
}

猜你喜欢

转载自blog.csdn.net/m0_52380556/article/details/115261279