标签:
一、题目要求
三人行设计了一个灌水论坛。信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子。坊间风闻该“水王”发帖数目超过了帖子数目的一半。
如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者的ID也在其中,你能快速的找到这个传说中的水王吗?
二、设计思路
(1)、我首先想到的是将帖子的ID都统计一下,然后在比较,最大的就会是水王的帖子,但是我的方法空间复杂度较高,便换了一种方法。
(2)、我看到帖子超过一般了,那将帖子的ID排序,那中间的必定是水王的ID,通过这种方法的时间复杂度O(n*n)。
(3)、还有一种更为简单额一种思路,就是消消乐思想:既然水王的帖子为一半以上,那么将相邻的帖子删掉剩下的必定为水王的帖子,这中方法优化度最高。
三、程序代码
1 #include<iostream.h> 2 int main() 3 { 4 int num[1000]; 5 int i,n; 6 7 int count=1; 8 cout<<"输入ID个数:"; 9 cin>>n; 10 cout<<"输入ID:"; 11 for(i=0;i<n;i++) 12 { 13 cin>>num[i]; 14 //cout<<num[i]; 15 16 } 17 cout<<endl; 18 int a=num[0]; 19 for(i=0;i<n;i++) 20 { 21 if(num[i]==a) 22 { 23 count++; 24 25 } 26 else 27 { 28 count--; 29 } 30 if(cout==0) 31 { 32 a=num[i]; 33 count=1; 34 } 35 36 } 37 cout<<"水王的ID:"<<a<<endl; 38 return 0; 39 }
四、结果截图
五、总结
在对一个事件进行处理时,我们都会对他先进行我们最容易想到的办法来处理,但是最容易想到的办法不一定就是最适合的办法,我们在想出办法以后,要对问题进行分析,试图找出更适合的办法,这样我们才能进步,才能有所突破,而不应该只为解决问题而解决问题。
标签:
原文地址:http://www.cnblogs.com/cuipengbo/p/4585149.html