- 谁拿了最多奖学金
- 2021-08-06 13:49:44 @
将我的程序和已经ac的程序都递交评测,我的程序就是无法ac,为什么?
对比了两个程序,没啥不同。我的程序在本地运行没有错,但是递交评测无法通过其它评测数据。
我的程序:
#include<iostream>
using namespace std;
int main() {
string name; //姓名
int score, class_score; // 期末平均成绩,班级评议成绩
char student_leader, west; // 是否是学生干部,是否是西部学生
int paper; // 发表的论文数
int bonus; //当前学生的奖学金
int all_bonus = 0; //n个学生的奖学金
int mx_bonus=0; //n个学生中最多的奖学金
string mx_bonus_name; //获取最多的奖学金的 姓名
int n;
cin >> n;
for (int i = 1; i <= n; i++) {
bonus = 0;
cin >> name >> score >> class_score >> student_leader >> west >> paper;
if (score>80 && paper >= 1) {
bonus += 8000;
}
if (score>85 && class_score>80) {
bonus += 4000;
}
if (score>90) {
bonus += 2000;
}
if (score>85 && west=='Y') {
bonus += 1000;
}
if (score>80 && student_leader=='Y') {
bonus += 850;
}
//计算判断
if (mx_bonus < bonus) {
mx_bonus = bonus;
mx_bonus_name = name;
}
all_bonus += bonus;
}
cout << mx_bonus_name << endl;
cout << mx_bonus << endl;
cout << all_bonus;
return 0;
}
已经ac的程序如下,来自题解:https://vijos.org/p/1001/solution
#include<iostream>
using namespace std;
int main()
{
string a,g;
int b,c,f,n,money=0,result=0,sum=0;
char d,e;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a>>b>>c>>d>>e>>f;
money=0;
if(b>80&&f>=1)
money+=8000;
if(b>85&&c>80)
money+=4000;
if(b>90)
money+=2000;
if(b>85&&e=='Y')
money+=1000;
if(c>80&&d=='Y')
money+=850;
sum+=money;
if(result<money)
{
result=money;
g=a;
}
}
cout<<g<<endl<<result<<endl<<sum<<endl;
return 0;
}
1 条评论
-
AFOer_f (flyjack) LV 5 @ 2021-08-19 21:55:37
你可以输出中间变量或者参考题解改改(逃)
- 1