杭电acm1070网址http://acm.hdu.edu.cn/showproblem.php?pid=1070 很水的,但是我用这种方法就是做不出来
#include<iostream>#include<stdio.h>#include<string>usingnamespacestd;structmilk{charn...
#include<iostream>
#include<stdio.h>
#include<string>
using namespace std;
struct milk
{
char name[101];
double price;
int volume;
double value;
}mi[101];
int cmp(const void *x,const void *y)
{
struct milk *a=(milk *)x;
struct milk *b=(milk *)y;
if(a->value!=b->value)
return b->value-a->value;
else
return b->volume-a->volume;
}
int main()
{
int i,n,m,v;
cin>>n;
while(n--)
{
cin>>m;
getchar();
for(i=0;i<m;i++)
{
cin>>mi[i].name>>mi[i].price>>mi[i].value;
getchar();
if(mi[i].value>1000)
v=5;
else
v=mi[i].volume/200;
mi[i].value=v/mi[i].price;
}
qsort(mi,m,sizeof(mi[0]),cmp);
cout<<mi[0].name<<endl;
}
return 0;
} 展开
#include<stdio.h>
#include<string>
using namespace std;
struct milk
{
char name[101];
double price;
int volume;
double value;
}mi[101];
int cmp(const void *x,const void *y)
{
struct milk *a=(milk *)x;
struct milk *b=(milk *)y;
if(a->value!=b->value)
return b->value-a->value;
else
return b->volume-a->volume;
}
int main()
{
int i,n,m,v;
cin>>n;
while(n--)
{
cin>>m;
getchar();
for(i=0;i<m;i++)
{
cin>>mi[i].name>>mi[i].price>>mi[i].value;
getchar();
if(mi[i].value>1000)
v=5;
else
v=mi[i].volume/200;
mi[i].value=v/mi[i].price;
}
qsort(mi,m,sizeof(mi[0]),cmp);
cout<<mi[0].name<<endl;
}
return 0;
} 展开
2个回答
展开全部
#include <stdio.h>
#include <string.h>
struct milk{
char brand[128];
int price;
int volume;
double value;
}a[100];
int main(void){
int i,t,n,d;
struct milk tmp;
scanf("%d",&t);
while (t--){
scanf("%d",&n);
for (i=0; i<n; i++){
scanf("%s %d %d",a[i].brand,&a[i].price,&a[i].volume);
d = a[i].volume/200;
if (d==0)
a[i].value = 3.4e+38; // 小于200毫升则费用最高
else if (d<=5)
a[i].value = (double)a[i].price/d;
else
a[i].value = (double)a[i].price/5;
}
tmp = a[0];
for (i=1; i<n; i++)
if (a[i].value<tmp.value)
tmp = a[i];
else if (a[i].value==tmp.value && a[i].volume>tmp.volume)
tmp = a[i];
printf("%s\n",tmp.brand);
}
return 0;
}
我也写过排序的,还有不用数组的,全部WA。搞不懂为什么,只能用这种烂方式解决。
#include <string.h>
struct milk{
char brand[128];
int price;
int volume;
double value;
}a[100];
int main(void){
int i,t,n,d;
struct milk tmp;
scanf("%d",&t);
while (t--){
scanf("%d",&n);
for (i=0; i<n; i++){
scanf("%s %d %d",a[i].brand,&a[i].price,&a[i].volume);
d = a[i].volume/200;
if (d==0)
a[i].value = 3.4e+38; // 小于200毫升则费用最高
else if (d<=5)
a[i].value = (double)a[i].price/d;
else
a[i].value = (double)a[i].price/5;
}
tmp = a[0];
for (i=1; i<n; i++)
if (a[i].value<tmp.value)
tmp = a[i];
else if (a[i].value==tmp.value && a[i].volume>tmp.volume)
tmp = a[i];
printf("%s\n",tmp.brand);
}
return 0;
}
我也写过排序的,还有不用数组的,全部WA。搞不懂为什么,只能用这种烂方式解决。
展开全部
a数组下标最小值是0,最大下标是2。程序修改如下:
#include<stdio.h>
int main()
{
int a[3],k,i;
scanf("%d %d %d",&a[0],&a[1],&a[2]); /* scanf("%d %d %d",&a[1],&a[2],&a[3]); */
k=0;
for(i=0;i<3;i++) /* for(i=1;i<=3;i++) */
{
if(a[i]<=168)
{
printf("CRASH %d",a[i]);
k=1;
break;
}
}
if(k==0)
printf("NO CRASH");
return 0;
}
#include<stdio.h>
int main()
{
int a[3],k,i;
scanf("%d %d %d",&a[0],&a[1],&a[2]); /* scanf("%d %d %d",&a[1],&a[2],&a[3]); */
k=0;
for(i=0;i<3;i++) /* for(i=1;i<=3;i++) */
{
if(a[i]<=168)
{
printf("CRASH %d",a[i]);
k=1;
break;
}
}
if(k==0)
printf("NO CRASH");
return 0;
}
追问
大哥,你回答错问题了吧,你看题目里根本没CASH啊!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询