PAT-1032挖掘機技術哪家強?
阿新 • • 發佈:2019-02-19
1032 挖掘機技術哪家強(20)(20 分)
為了用事實說明挖掘機技術到底哪家強,PAT組織了一場挖掘機技能大賽。現請你根據比賽結果統計出技術最強的那個學校。
輸入格式:
輸入在第1行給出不超過10^5^的正整數N,即參賽人數。隨後N行,每行給出一位參賽者的資訊和成績,包括其所代表的學校的編號(從1開始連續編號)、及其比賽成績(百分制),中間以空格分隔。
輸出格式:
在一行中給出總得分最高的學校的編號、及其總分,中間以空格分隔。題目保證答案唯一,沒有並列。
輸入樣例:
6
3 65
2 80
1 100
2 70
3 40
3 0
輸出樣例:
2 150
#include <stdio.h> int school[100000]={0};//題目要求把陣列的宣告放在第1行 int main(){ int n,id,score; scanf("%d",&n); for(int i=1;i<=n;i++){ scanf("%d%d",&id,&score); school[id]+=score;//將id相同的score累加起來,統計總成績 } int k=-1,max=-1; for(int i=1;i<=n;i++){//遍歷 if(school[i]>max){//遍歷比較 max=school[i];//將最大值賦給max k=i; //記錄下標 } } printf("%d %d",k,max); return 0; }
summary:
一定要按照題目要求來! 一定要按照題目要求來! 一定要按照題目要求來!
題目中明確給定在第一行給出不超過10^5的正整數N,即參賽人數,就必需放在第一行,之前我沒放在第一行,去OJ提交的時候,滿分20只給17,因為你的程式碼沒有按照題目要求的規範來,造成的扣分.為了減少不必要的扣分,一定要按照題目要求來!
第一次做這道題的時候,根本沒什麼思路,磨了辦法,最後看了解析,後來才明白了,(這時候的我是有多菜)好了,正題開始:
陣列的每一個元素的下標,其實可以代表一類東西,比如 在陣列int A[10]; A[1]的下標1就可以代表ID為1的一類資料,並把ID為1的資料全部累加賦值到A[1]中,這樣A[1]的下標代表1這類資料,A[1]的值就代表ID為1的這類資料的值.
求最大值值需要:定義一個MAX,讓,MAX和陣列中的每一個比較即可,
如果MAX<陣列中的某一個值,則將那個比MAX大的值賦值給MAX,然後繼續遍歷比較.
過程中如果還想知道它的下標,還可以定義一個mark,來記錄下標,
int mark=-1,max=-1;
for(int i=1;i<=n;i++){
if(school[i]>max){
max=school[i];
mark=i;
}
}