1032 挖掘機(jī)技術(shù)哪家強(qiáng) (20分)
為了用事實(shí)說(shuō)明挖掘機(jī)技術(shù)到底哪家強(qiáng),PAT 組織了一場(chǎng)挖掘機(jī)技能大賽?,F(xiàn)請(qǐng)你根據(jù)比賽結(jié)果統(tǒng)計(jì)出技術(shù)最強(qiáng)的那個(gè)學(xué)校。
輸入格式:
輸入在第 1 行給出不超過(guò) 10
?5
?? 的正整數(shù) N,即參賽人數(shù)。隨后 N 行,每行給出一位參賽者的信息和成績(jī),包括其所代表的學(xué)校的編號(hào)(從 1 開(kāi)始連續(xù)編號(hào))、及其比賽成績(jī)(百分制),中間以空格分隔。輸出格式:
在一行中給出總得分最高的學(xué)校的編號(hào)、及其總分,中間以空格分隔。題目保證答案唯一,沒(méi)有并列。輸入樣例:
6
3 65
2 80
1 100
2 70
3 40
3 0輸出樣例:
2 150
法一:數(shù)組法
#include <cstdio>
const int maxn = 100010;
int school[maxn]={0};
int main(){
int n,schID,score;
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d %d",&schID,&score);
school[schID] += score;
}
int k = 0,MAX = -1;
for(int i=1;i<=n;i++){
if(school[i]>MAX){
MAX = school[i];
k = i;
}
}
printf("%d %d\n",k,MAX);
}
法二:結(jié)構(gòu)體法:
#include <cstdio>
struct schoolInfo{
int id;
int score;
}sch[100010];
int main(){
int n,id,score;
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d %d",&id,&score);
sch[i].id=i;
sch[id].score += score;
}
int k = 0,MAX = -1;
for(int i=1;i<=n;i++){
if(sch[i].score>MAX){
MAX = sch[i].score;
k = sch[i].id;
}
}
printf("%d %d\n",k,MAX);
}
備注:
指針是一個(gè)沒(méi)有分配內(nèi)存的,你需要給他分配一個(gè)地址然后才可以往里面寫(xiě)值
記住了不要給任何沒(méi)有初始化的指針的賦值!
給指針?lè)峙鋬?nèi)存:
#include <stdlib.h>
p = (char *)malloc(10);
或者使用中間變量:
int a;
scanf("%d",&a);
int* p = &a;