中级光能
题目:
2705 选择供应商
题目描述 Description
某学校要进行重新装潢,一共需要三种不同的材料,现在有多个供应商可以提供所有装潢需要的材料,供应商提供三种材料的价格,价格为0表示该种供应商没有那一种材料,学校想处理的越简单越好,所以打算选择一个可以提供三种材料的某一家供应商来买,且三种材料的平均价格越低越好。
输入描述 Input Description
第一行:n,表示有n个供应商,n<60
接下来n行:每行先有一个字符串表示供应商的名字,然后有三个数字分别表示三种不同材料的价格,价格为0表示此家供应商没有那一种材料
输出描述 Output Description
输出一行,为选中的供应商的信息,包括供应商的名字和此家三种材料的价格
样例输入 Sample Input
10
IuUjgKA 9 0 10
v 6 0 2
JBhLeCdA 8 9 1
ZPymTsna 7 8 1
DaCpcjBR 8 1 0
K 6 6 1
lh 8 3 4
YNgoOdBU 8 10 4
Lh 10 5 7
WbKuli 3 6 1
样例输出 Sample Output
WbKuli 3 6 1
我的代码:
#include <algorithm>
#include <iostream>
#include <cstdio>
#include <string>
using namespace std;
struct dp
{
string mz;
int a,b,c,d,e;
}a[1001],b[1001];
int main ()
{
int n,j=0;
cin>>n;
for (int i=1;i<=n;i++)
{
cin>>a[i].mz>>a[i].a>>a[i].b>>a[i].c>>a[i].d>>a[i].e;
int h=a[i].a+a[i].b+a[i].c+a[i].d+a[i].e;
if (h>=45)
{
j++;
b[j].mz=a[i].mz;
cout<<b[j].mz<<endl;
}
}
for (int i=0;i<=j;i++)
cout<<b[i].mz<<" ";
cout<<endl<<j;
return 0;
}
提交结果:
王梓澳在2018-07-09 13:52:40追加了内容
代码错了,是:
#include <algorithm>
#include <iostream>
#include <cstdio>
#include <string>
using namespace std;
struct gys
{
string mz;
int a,b,c;
}a[1001];
bool cmp (gys s1,gys s2)
{
if (s1.a!=s2.a)
return s1.a<s2.a;
else if (s1.b!=s2.b)
return s1.b<s2.b;
else if (s1.c<s2.c)
return s1.c<s2.c;
}
int main ()
{
int n;
cin>>n;
for (int i=1;i<=n;i++)
{
cin>>a[i].mz>>a[i].a>>a[i].b>>a[i].c;
if (!(a[i].a||a[i].b||a[i].c))
{
a[i].a=0;
a[i].b=0;
a[i].c=0;
}
}
sort(a,a+n,cmp);
cout<<a[n].mz<<" "<<a[n].a<<" "<<a[n].b<<" "<<a[n].c;
return 0;
}
新手天翼
我问一下,题目说了
"a[i].e"是干嘛的?
还有a数组和结构体变量a重名了耶!
(你(wa)怕(zhe)是(shi)提(ji)交(fang)错(can)题(an)了(ai))
我给你提供一个思路,你可以定义一个"min"和jl,用来存储最便宜的.然后直接在输入的那个循环里判断(a[i].a&&a[i].b&&a[i].c),然后判断他们的和是否小于min,是的就存min,并且用jl记录i的值,最后输出a[jl].mz和a[jl].a和a[jl].b和a[jl].c