1. 程式人生 > >2017年天梯賽大區賽第二題 點贊

2017年天梯賽大區賽第二題 點贊

今天做了一道天梯賽的題,難度應該算是容易,我這種級別的,都可以做出來,而且是一次AC...

這個題和絕地求生--槍械片的一道題目很相似,但是沒有那個題目難度高,主要思路就是,用一個長度確定的陣列,儲存值,首先初始化陣列,然後獲取輸入,當輸入的值為陣列的某一個下標時,陣列的值就自增,最後判斷最大的那個是多少。一開始我想用sort直接升序,然後輸出第一位就ok,但是後來,我發現這樣就找不到i的值了,只能輸出出現的次數,只好用一個函式來判斷最大的值為多少...果然還是不理解C++,繼續努力!

附上程式碼:

#include<stdio.h>
//#include<algorithm>
//using namespace std;


//初始化陣列
void init(int* mem){
    for(int i = 1 ;i <= 1000;i++){
        mem[i] = 0 ;
    }
}

void add(int f,int* mem){
    for(int i = 1;i <= 1000;i++){
        if(i == f){
            mem[i]++;
        }
    }
}

void check(int *mem){
    int t=0,flag;

    for(int i = 1;i <= 1000;i++){
        if(t <= mem[i]){
            t = mem[i];
            flag = i;
            //printf("%d\n",i);
        }
    }
    printf("%d %d",flag,t);
}
//
//bool cmp(int a,int b){
//    return a > b;
//}
int main(){
    int mem[1002],n,k,f;
    init(mem);
    scanf("%d",&n);
    for(int i = 1;i <= n;i++){
        scanf("%d",&k);
        for(int j = 1;j <= k;j++){
            scanf("%d",&f);
            add(f,mem);
        }
    }
    check(mem);
    //sort(mem,mem+1000,cmp);
    // printf("%d",mem[1]);
    return 0;
}