一道NOIP2007复赛问题

来源:百度知道 编辑:UC知道 时间:2024/06/16 23:07:25
题目: http://www.vijos.cn/Problem_Show.asp?id=1398
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
int a[n][3],b,c[n],d,max[5]={0},mn[5],cache,p[10],z=0,pn[10],kake;
for (b=0;b<n;b++)
{
scanf("%d",&a[b][1]);
scanf("%d",&a[b][2]);
scanf("%d",&a[b][3]);
c[b]=a[b][1]+a[b][2]+a[b][3];
}
for (d=0;d<5;d++)
{
for (b=0;b<n;b++)
{
if (max[d]<c[b])
{
max[d]=c[b];
mn[d]=b;
}
}
c[mn[d]]=0;
}
for (d=0;d<10;d++)
{
for (b=0;b<n;b++)
{
if (max[d]==c[b])
{

写的有点乱啊,我说一个方法吧:
1.定义一个类Student,有:学号id,总分sum,语文,china
2.读数据
3.重载<操作符,一个函数:
bool operator < (Student& s1,Student& s2){
if (s1.sum>s2.sum) return true;
if (s1.sum==s2.sum && s1.china>s2.china) return true;
if (s1.sum==s2.sum && s1.china=s2.china() && s1.id<s2.id) return true;
return false;
}
4.stl部分排序partial_sort(a, a+5, a+sizeof(a).sizeof(Student),less<Student>());
5,取前5个

一句注释也没有,汗!

大法师法