1029:Ignatius and the Princess IV
Posted 猪妹
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1029:Ignatius and the Princess IV相关的知识,希望对你有一定的参考价值。
题目大意是找出数组中出现次数超过一半的数。
基本思想:每遇到两个不同的数就消掉,设一个计数器就行了。
存出现次数最大的那个数的出现次数。
当下一个数与当前的数不同时,计数器减一,相同,则加一。
实现代码:
1 #include <iostream> 2 #include <stdio.h> 3 using namespace std; 4 5 int main() 6 { 7 int n,x,m_max,cnt; 8 9 // while(cin>>n) 10 while(scanf("%d",&n)!=EOF) 11 { 12 13 cnt = 0; 14 // while(n--) 15 for(int i = 0;i<n;i++)//相比之下,for的运行时间更少,所以能用for的,不要用while 16 { 17 // cin>>x; 18 scanf("%d",&x); 19 if(!cnt) 20 { 21 m_max = x; 22 cnt++; 23 } 24 else if(x!=m_max) cnt--; 25 else if(x==m_max) cnt++; 26 } 27 // cout<<m_max<<endl; 28 printf("%d\\n",m_max); 29 } 30 return 0; 31 }
以上是关于1029:Ignatius and the Princess IV的主要内容,如果未能解决你的问题,请参考以下文章
[2016-03-27][HDU][1029][Ignatius and the Princess IV]
HDU 1029: Ignatius and the Princess IV
HDU 1029 Ignatius and the Princess IV
HDU 1029 Ignatius and the Princess IV