标签:
找出现次数最多的数
因为n是个奇数,所求的数个数至少出现(n+1)/2次,每次去掉两个不一样的最后剩下的那个数一定是正确答案。。。
其实还可以用其他解法,因为除了所求的数字,其他的数字出现次数小于(n+1)/2,因此输出唯一的次数大于(n+1)/2的数就ac了(很简单吧=.=)
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 using namespace std; 5 6 int main() 7 { 8 int n,t; 9 int tmp,cmp; 10 while(~scanf("%d",&n)){ 11 cmp=0; 12 for(int i=0;i<n;i++){ 13 scanf("%d",&tmp); 14 if(cmp == 0){ 15 cmp=1; 16 t=tmp; 17 } 18 else{ 19 if(t==tmp) 20 cmp++; 21 else 22 cmp--; 23 } 24 } 25 printf("%d\n",t); 26 } 27 return 0; 28 }
HDU 1029 Ignatius and the Princess IV
标签:
原文地址:http://www.cnblogs.com/livelihao/p/5162993.html