找水王

一、实验要求

l 三人行设计了一个灌水论坛。信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一  

    个“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子。坊间风闻该“水王”发帖

    数目超过了帖子数目的一半。

l 如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者的ID也在其中,你能快

    速的找到这个传说中的水王吗?

二、设计思想

    每次比较两个相邻的ID是否一样,如果不一样则删除。首先假设第一个ID是水王,然后和第二个比较,看看是否相同,如果不同则把第二个命名为水王,一次类推,如果相同,则time++。在盛夏的ID中,水王依然过半,重复这个过程,就可以找到水王。

    

三、源代码

 1 // 信1201-2班 司新红 
 2 
 3 #include "stdafx.h"
 4 #include "iostream"
 5 using namespace std;
 6 
 7 int main()
 8 {
 9     int a[10]={1,3,2,3,2,3,1,3,3};
10     int result = a[0];
11     int times = 1;
12     for(int i = 1; i < 10; i++)
13     {
14         if(a[i] == result)
15             times++;
16         else
17             times--;
18         if(times == 0)
19         {
20             result = a[i];
21             times = 1;
22         }
23     }
24     cout<<"水王为:"<<result<<endl;
25     return 0;
26 }

 

四、运行结果

五、心得体会

    这个实验我刚刚看到的时候一点思路都没有,后来老师提供了一个思路,先排序,然后找到一半位置上的ID即为水王,但是由于那个时间复杂度太高,需要优化,但是实在没有思路,后来经过来时的提示,才明白该如何做。

 

posted @ 2015-04-21 17:06  幽梦  阅读(187)  评论(0)    收藏  举报