ACM基础学习--1.3

问题 D: NO.1

时间限制: 1 Sec  内存限制: 128 MB
提交: 665  解决: 270
[提交][状态][讨论版][命题人:外部导入]

题目描述

    所谓NO.1,就是所有成绩都排在第一的同学,我们假设每个人只有理科,文科,体育这三门课。

我们现在假设某门成绩并列第一,并列的人都是这门功课第一名,并且保证数据不会出现2个NO.1

现给定n个人的信息,输出第一名的名字。

输入

多组数据,输入文件第一行为一个整数T,代表测试数据数。 (T<50)

接下来T个测试数据。  

每个测试数据的的第一行为一个整数n(n<=100),接下来有n行,每行的格式如下: 

名字 理科成绩 文科成绩 体育成绩 (数值越高代表成绩越好).

名字长度不超过20,3个成绩的为正整型.

输出

对于每个测试数据,输出NO.1的名字,如果不存在第一名,就输出"NO NO.1".

样例输入

3
2
lvhao 2 2 2
xiaoshua 1 1 1
2
lvhao 4 4 4
xiaoshua 4 4 3
3
lvhao 3 4 5
xiaoshua 1 3 1
pan 4 1 5

样例输出

lvhao
lvhao
NO NO.1

代码如下:

#include <iostream>
using namespace std;

struct student{
    char xh[20];
    char name[20];
    double yu,sx,yy;
}stu[200];      //这样是全局变量

int main(){
    int t,n;
    cin>>t;
    while(t--){
        cin>>n;
        int flag = 0;
        int k1=-1,k2=-1,k3=-1;
        int max1=0,max2=0,max3=0;
        for(int i=1;i<=n;i++){
            cin>>stu[i].name>>stu[i].yu>>stu[i].sx>>stu[i].yy;
            if(stu[i].yu>max1){
                max1 = stu[i].yu;
                k1=i;
            }
            if(stu[i].sx>max2){
                max2 = stu[i].sx;
                k2=i;
            }
            if(stu[i].yy>max3)max3 = stu[i].yy,k3=i;


        }
        /*
        if(k1==k2&&k2==k3){
            cout<<stu[k1].name<<endl;
            flag = 1;
        }

        if(flag==0)cout<<"NO NO.1"<<endl;*/
        for(int i=1;i<=n;i++){
            if(stu[i].yu==max1&&stu[i].sx==max2&&stu[i].yy==max3){
                cout<<stu[i].name<<endl;
                flag=1;
                break;
            }
        }
        if(flag==0)cout<<"NO NO.1"<<endl;


    }
}

/*这题有个很不错的地方:如果是选择

if(k1==k2&&k2==k3){
    cout<<stu[k1].name<<endl;
    flag = 1;
}

if(flag==0)cout<<"NO NO.1"<<endl;
这种方式进行判断会出现特殊情况:

lvhao 2 2 2
xiaoshua 2 2 3
这样输出结果是:"NO NO.1",但实际结果却是xiaoshua成绩都是名列第一
*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值