hodj 1029 Ignatius and the Princess IV
阿新 • • 發佈:2018-11-07
題目來源:http://acm.hdu.edu.cn/showproblem.php?pid=1029
直接開一個大點的陣列,資料竟然過了
hdoj 1029 Ignatius and the Princess IV 題目大意:找出數列中特殊的數,特殊的數為出現次數大於(n+2)/2的數 解題思路1:直接用一個數組記錄每一個數字出現的次數 #include<stdio.h> #include<string.h> int arr[1000010]; int main(){ int N,num; while(scanf("%d",&N)!=EOF){ int ans=0; memset(arr,0,sizeof(arr)); for(int i=1;i<=N;i++){ scanf("%d",&num); arr[num]++; if(arr[num]>=(N+1)/2){ ans=num; } } printf("%d\n",ans); } return 0; }
有好多數沒有出現,用map可以節省一些空間
#include<stdio.h> #include<string.h> #include<map> using namespace std; int main(){ int N,num; map<int,int>m; while(scanf("%d",&N)!=EOF){ int ans=0; m.clear(); for(int i=1;i<=N;i++){ scanf("%d",&num); m[num]++; if(m[num]>=(N+1)/2){ ans=num; } } printf("%d\n",ans); } return 0; }