算法笔记(二)挖掘机技术哪家强

题目:挖掘机学校分别派出几人来,展示各家实力。

样例:

6
3 65
2 80
1 100
2 70
3 40
3 0

注:第一行是共派出的参赛人数N(不超过10^5),下面是各个参赛者的成绩。

标准解:

#include <stdio.h>

const int maxn = 10010;

int school[maxn] = {0}; //记录每个学校的总分

int main()

{

    int n,schID,score;'

    scanf("%d", &n);

    for(int i=1; i<n; i++)

    {

        scanf("%d%d", &schID, &score);  //学校ID,分数

        school[schID] += score;  //学校schID的总分增加score

     }

     int k=1, MAX=-1;    //最高总分的学校ID以及其总分

     for(int t=1; t<n; t++ )   //从所有学校中选出总分最高的一个

     {

         if(school[i]>MAX)

         {

             MAX = school[t];

             k = t;

          }

     }

printf("%d%d\n", k, MAX);

return 0;

}

注意一:在比较最大值部分,有一定的浪费,因为在:

   for(int t=1; t<n; t++ )   //从所有学校中选出总分最高的一个

     {

         if(school[t]>MAX)

         {

             MAX = school[t];

             k = t;

          }

     }

其中的t值是小于或者等于n的,n为参赛人数,而t则为学校的ID,当t远小于ID时会有一定浪费。当然这只是我的理解。因为毕竟如果出现n个学校,同时n个学生分别出自不同的学校也明了了。

注意二:t在VC++6.0中不能为i,编译器会报错:定义混乱


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值