问题-http : //codeforces.com/problemset/problem/152/A
我试图找到每门课程的最高成绩,然后找到所有每门课程都获得最高成绩的学生。如果学生在至少1门课程中获得了最高分,则将相应元素中的best值赋给1。在数组中值为1的元素中,我们可以确定成功学生的数量。我在确定每个科目的最高成绩时遇到了麻烦。测试用例7(下面给出)的每个科目的最高成绩出了错。我的代码有什么问题?
测试案例的法官日志给出了错误的输出:
Time: 0 ms, memory: 0 KB
Verdict: WRONG_ANSWER
Input
3 4
2553
6856
5133
Output
3
Answer
2
Checker comment
wrong answer expected 2, found 3
我的代码:
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
int n,m,temp;
string grade[101];
int best[101],maxgrade[101];
cin>>n>>m;
for(int i=0;i<n;i++)
{
cin>>grade[i];
}
for(int j=0;j<m;j++) //Finding maximum grade per subject.
{
int maximum=grade[0][j];
maximum-=48; //Marks are stored as characters.Subtracting 48 gives integral value of the ASCII value of number.
for(int i=0;i<n;i++)
{
temp=grade[i][j];
temp-=48;
maxgrade[j]=max(maximum,temp);
}
}
int successful=0;
for(int i=0;i<n;i++) //Finding number of students having obtained maximum grade in atleast 1 subject.
{
for(int j=0;j<m;j++)
{
temp=grade[i][j];
temp-=48;
if(temp==maxgrade[j])
{
best[i]=1;
successful++;
break;
}
}
}
cout<<successful;
}
问题出在第一个for循环中,您可以按以下步骤纠正它(请注意maxgrade [j] = max(...)表达式):
for(int j=0;j<m;j++) //Finding maximum grade per subject.
{
maxgrade[j] = 0;
for(int i=0;i<n;i++)
{
temp=grade[i][j] - 48;
maxgrade[j]=max(maxgrade[j], temp);
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句