杭电acm1070题。绝对水题,各种WA?求大牛们帮忙看看错到哪了、、、
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1070#include<stdio.h>#include<iostream...
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1070
#include<stdio.h>
#include<iostream>
using namespace std;
struct milk
{
string ch;
float jg;
int sl;
}leixing1[101];
int main()
{
int ri,repeat,i,j,d,k;
float s,n,min;
string ch1;
cin>>repeat;
for(ri=0;ri<repeat;ri++)
{
min=100000000.0;
cin>>n;
for(i=0;i<n;i++)
{
cin>>leixing1[i].ch>>leixing1[i].jg>>leixing1[i].sl;
}
for(i=0;i<n;i++)
{
if(leixing1[i].sl<200)
continue;
else if(leixing1[i].sl>1000)
{
d=5;
s=leixing1[i].jg/d;
if(s<min||(s==min&&leixing1[k].sl<leixing1[i].sl))
{
min=s;
ch1=leixing1[i].ch;
k=i;
}
}
else
{
d=leixing1[i].sl/200;
s=leixing1[i].jg/d;
if(s<min||(s==min&&leixing1[k].sl<leixing1[i].sl))
{
min=s;
ch1=leixing1[i].ch;
k=i;
}
}
}
cout<<ch1<<endl;
}
return 0;
} 展开
#include<stdio.h>
#include<iostream>
using namespace std;
struct milk
{
string ch;
float jg;
int sl;
}leixing1[101];
int main()
{
int ri,repeat,i,j,d,k;
float s,n,min;
string ch1;
cin>>repeat;
for(ri=0;ri<repeat;ri++)
{
min=100000000.0;
cin>>n;
for(i=0;i<n;i++)
{
cin>>leixing1[i].ch>>leixing1[i].jg>>leixing1[i].sl;
}
for(i=0;i<n;i++)
{
if(leixing1[i].sl<200)
continue;
else if(leixing1[i].sl>1000)
{
d=5;
s=leixing1[i].jg/d;
if(s<min||(s==min&&leixing1[k].sl<leixing1[i].sl))
{
min=s;
ch1=leixing1[i].ch;
k=i;
}
}
else
{
d=leixing1[i].sl/200;
s=leixing1[i].jg/d;
if(s<min||(s==min&&leixing1[k].sl<leixing1[i].sl))
{
min=s;
ch1=leixing1[i].ch;
k=i;
}
}
}
cout<<ch1<<endl;
}
return 0;
} 展开
4个回答
展开全部
#include<stdio.h>
#include<iostream>
#include<string> // 添加string库
using namespace std;
struct milk
{
string ch;
double jg; //jg 用double
int sl;
}leixing1[101];
int main()
{
int ri,repeat,i,j,d,k,n; // n 用int
double s,min; // s,min 用double
string ch1;
cin>>repeat;
for(ri=0;ri<repeat;ri++)
{
min=100000000.0;
cin>>n;
for(i=0;i<n;i++)
{
cin>>leixing1[i].ch>>leixing1[i].jg>>leixing1[i].sl;
}
for(i=0;i<n;i++)
{
if(leixing1[i].sl<200)
continue;
else if(leixing1[i].sl>1000)
{
d=5;
s=leixing1[i].jg/d;
if(s<min||(s==min&&leixing1[k].sl<leixing1[i].sl))
{
min=s;
ch1=leixing1[i].ch;
k=i;
}
}
else
{
d=leixing1[i].sl/200;
s=leixing1[i].jg/d;
if(s<min||(s==min&&leixing1[k].sl<leixing1[i].sl))
{
min=s;
ch1=leixing1[i].ch;
k=i;
}
}
}
cout<<ch1<<endl;
}
return 0;
}
#include<iostream>
#include<string> // 添加string库
using namespace std;
struct milk
{
string ch;
double jg; //jg 用double
int sl;
}leixing1[101];
int main()
{
int ri,repeat,i,j,d,k,n; // n 用int
double s,min; // s,min 用double
string ch1;
cin>>repeat;
for(ri=0;ri<repeat;ri++)
{
min=100000000.0;
cin>>n;
for(i=0;i<n;i++)
{
cin>>leixing1[i].ch>>leixing1[i].jg>>leixing1[i].sl;
}
for(i=0;i<n;i++)
{
if(leixing1[i].sl<200)
continue;
else if(leixing1[i].sl>1000)
{
d=5;
s=leixing1[i].jg/d;
if(s<min||(s==min&&leixing1[k].sl<leixing1[i].sl))
{
min=s;
ch1=leixing1[i].ch;
k=i;
}
}
else
{
d=leixing1[i].sl/200;
s=leixing1[i].jg/d;
if(s<min||(s==min&&leixing1[k].sl<leixing1[i].sl))
{
min=s;
ch1=leixing1[i].ch;
k=i;
}
}
}
cout<<ch1<<endl;
}
return 0;
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在第一种情况下,伊利牛奶可以喝了2天,费用10元。蒙牛牛奶可以喝5天,它的成本20元。因此,蒙牛是最便宜的。
在第二种情况下,光明牛奶应该被忽略。烟牌牛奶可以喝5天,但它的成本40元。因此,蒙牛是最便宜的。
如果有超过一个最便宜的品牌,你应该选择容量最大的那个品牌。
在第二种情况下,光明牛奶应该被忽略。烟牌牛奶可以喝5天,但它的成本40元。因此,蒙牛是最便宜的。
如果有超过一个最便宜的品牌,你应该选择容量最大的那个品牌。
追问
这些都考虑了,实在找不出错误的地方,很纠结,麻烦你帮我看看我的代码那错了?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
AC代码,要小心只能喝五天
#include <iostream>
using namespace std;
struct Node
{
char name[102];
int price;
int ml;
int per;
}Milk[102];
int pri(Node&mi)
{
Node mil = mi;
while (mil.ml > 200)
{
mil.ml -= 200;
mil.per++;
if (mil.per == 5) //最多只能喝5天
{
break;
}
}
return mil.per;
}
int main()
{
int t;
cin>>t;
while (t--)
{
Milk[101].price = 100000;
Milk[101].per = 1;
int n;
cin>>n;
for (int i=0; i<n; ++i)
{
cin>>Milk[i].name>>Milk[i].price>>Milk[i].ml;
Milk[i].per = 0;
}
for (int i=0;i<n; ++i)
{
if(Milk[i].ml < 200)
continue;
else
{
Milk[i].per = pri(Milk[i]);
if(Milk[i].price/Milk[i].per < Milk[101].price/Milk[101].per) //计算性价比
{
Milk[101].price = Milk[i].price;
Milk[101].per = Milk[i].per;
strcpy(Milk[101].name,Milk[i].name);
Milk[101].ml = Milk[i].ml;
continue;
}
if(Milk[i].price/Milk[i].per == Milk[101].price/Milk[101].per) //性价比相同选容量大的
{
if (Milk[i].ml > Milk[101].ml)
{
Milk[101].price = Milk[i].price;
Milk[101].per = Milk[i].per;
strcpy(Milk[101].name,Milk[i].name);
Milk[101].ml = Milk[i].ml;
}
}
}
}
cout<<Milk[101].name<<endl;
}
return 0;
}
#include <iostream>
using namespace std;
struct Node
{
char name[102];
int price;
int ml;
int per;
}Milk[102];
int pri(Node&mi)
{
Node mil = mi;
while (mil.ml > 200)
{
mil.ml -= 200;
mil.per++;
if (mil.per == 5) //最多只能喝5天
{
break;
}
}
return mil.per;
}
int main()
{
int t;
cin>>t;
while (t--)
{
Milk[101].price = 100000;
Milk[101].per = 1;
int n;
cin>>n;
for (int i=0; i<n; ++i)
{
cin>>Milk[i].name>>Milk[i].price>>Milk[i].ml;
Milk[i].per = 0;
}
for (int i=0;i<n; ++i)
{
if(Milk[i].ml < 200)
continue;
else
{
Milk[i].per = pri(Milk[i]);
if(Milk[i].price/Milk[i].per < Milk[101].price/Milk[101].per) //计算性价比
{
Milk[101].price = Milk[i].price;
Milk[101].per = Milk[i].per;
strcpy(Milk[101].name,Milk[i].name);
Milk[101].ml = Milk[i].ml;
continue;
}
if(Milk[i].price/Milk[i].per == Milk[101].price/Milk[101].per) //性价比相同选容量大的
{
if (Milk[i].ml > Milk[101].ml)
{
Milk[101].price = Milk[i].price;
Milk[101].per = Milk[i].per;
strcpy(Milk[101].name,Milk[i].name);
Milk[101].ml = Milk[i].ml;
}
}
}
}
cout<<Milk[101].name<<endl;
}
return 0;
}
追问
AC的代码我有的,我的代码应该是对的,实在找不出错误的地方,很纠结,麻烦你帮我看看我的代码那错了?
追答
真看不出来。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我提交了下,应该是float jg和float s,n,min的问题,替换为int之后,顺利AC。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询