编程之美-“水王”水贴计算

题目要求:

     三人行设计了一个灌水论坛。信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子。坊间风闻该“水王”发帖 数目超过了帖子数目的一半。

  如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者的ID也在其中,你能快速的找到这个传说中的水王吗?
想法:
      我们在这张ID列表中要注意到水王的ID是出现了帖子数目的一半这也就成为了题目的突破口,就如同参加选举投票时,你可以选三个人,而且参加选举的也仅是这三个人,如果你每个人都投了一票,这就意味着你放弃了选择;同理水王拥有最高的“票数”,当他减去别人的“票数”时,他依旧为正数,那他就获胜了。
源代码:
     
#include<iostream.h>
int find(int *ID, int N)  
{  
    int nTimes = 0;  
    int i;  
    int people;  
    for (i = 0; i < N; i++)  
    {  
        if (nTimes == 0)  
        {  
            people = ID[i];  
            nTimes++;  
        }  
        else  
        {  
            if (people == ID[i])  
                nTimes++;  
            else  
                nTimes--;  
        }  
    }  
  
    return people;  
} 
void main()
{
    int a[15]={5,6,8,2,4,9,7,5,7,6,5,2,5,1,5};
	int record=find(a,15);
	cout<<"水王ID"<<"\t"<<record<<endl;
}

  结果截图:

你可能感兴趣的:(编程之美-“水王”水贴计算)