问题 - http://codeforces.com/problemset/problem/152/A
我试图找到每个科目的最高分数,然后找到所有已经获得每个科目最高分的学生。如果学生在至少1个科目中得分最高,则相应元素的最佳分配值为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;
}
答案 0 :(得分:1)
问题出现在第一个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);
}
}