PATb1022做后感

题目描述

为了用事实说明挖掘机技术到底哪家强,PAT组织了一场挖掘机技能大赛。现请你根据比赛结果统计出技术最强的那个学校。

输入描述:

输入在第1行给出不超过105的正整数N,即参赛人数。随后N行,每行给出一位参赛者的信息和成绩,包括其所代表的学校的编号、及其比赛成绩(百分制),中间以空格分隔。

输出描述:

在一行中给出总得分最高的学校的编号、及其总分,中间以空格分隔。题目保证答案唯一,没有并列。

输入例子:

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

输出例子:

2 150

代码

原码
#include<stdio.h> 
int main()
{      
   int number,college,score;    
   static int i,a[100000],*p=a,c=100000;	//p指向最大值    
   scanf("%d",&number);   
   for(;i<number;i++)    
    {        
      scanf("%d",&college);       
      scanf("%d",&score);        
      a[college-1]+=score;   
    }    
   while(c--)    
   {        
   if(a[c]>*p)            
       p=a+c;   
   }    
   printf("%d %d",p-a+1,*p);}
修改1
#include<stdio.h> 
int main()
{   
     int number,college,score;   
     static int i,a[100000],*p=a;		   
     scanf("%d",&number);    
     for(;i<number;i++)   
      {        
       scanf("%d",&college);       
       scanf("%d",&score);       
       a[college-1]+=score;       
       if(a[college-1]>*p)          
       p=a+college-1;  		
      }							
    printf("%d %d",p-a+1,*p);	
 }			

改进:
原版通过遍历找到最大值
修改后随时记录当前最大值
效果:应当减少比较、但效果反而增加运行时间

修改2
scanf("%d",&college);        
scanf("%d",&score);        
C=college-1;        
a[c]+=score;        
if(a[c]>*p)            
p=a+c;

改进:
猜测可能为 修改版1重复计算了college-1
效果:运行时间减少。但仍不如原版,无果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值