2017年天梯賽大區賽第二題 點贊
阿新 • • 發佈:2018-12-27
今天做了一道天梯賽的題,難度應該算是容易,我這種級別的,都可以做出來,而且是一次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; }