找水王

一、实验要求

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即为水王,但是由于那个时间复杂度太高,需要优化,但是实在没有思路,后来经过来时的提示,才明白该如何做。

 

你可能感兴趣的:(找水王)