问题标题: 酷町堂:2705 选择供应商为啥是10分,各位大佬看一下哪错了?

0
0
已解决
王梓澳
王梓澳
中级光能
中级光能

题目:

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;
}

 


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

0
潘晨皓
潘晨皓
高级天翼
高级天翼

难,不过头文件#include<bits/stdc++.h>应该就行

我要回答