一、实验要求
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即为水王,但是由于那个时间复杂度太高,需要优化,但是实在没有思路,后来经过来时的提示,才明白该如何做。
原文:http://www.cnblogs.com/zgsxh/p/4444878.html