找水王2
实验题目
1 三人行设计了一个灌水论坛。信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子。坊间风闻该“水王”发帖数 目超过了帖子数目的一半。
2 如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者的ID也在其中,你能快速的找到这个传说中的水王吗?(参考核心代码)
3 随着论坛的发展,管理员发现水王没有了,但是统计结果表明,有三个发帖很多的ID。据统计他们的发帖数量超过了1/4,你能从发帖列表中快速找到他们吗?
实验思想
给三个水王命名为result1,result2,restult3,首先先给result1,result2,restult3赋值,即赋值给不同的三个ID,如果后面的ID和result不一样,则times都减1,即去掉三个不相同的数据,最后得到的result1,result2,restult3即为水王。
#include "stdafx.h" #include "iostream" using namespace std; int main() { int a[16]={1,1,1,1,1,2,2,2,2,2,3,3,3,3,4,3}; int result1; int result2; int result3; int times1=0; int times2=0; int times3=0; for(int i = 0; i < 16; i++) { if(times1==0) { result1=a[i]; times1=1; } else { if(a[i]==result1) { times1++; } else { if(times2==0) { result2=a[i]; times2=1; } else { if(a[i]==result2) { times2++; } else { if(times3==0) { result3=a[i]; times3=1; } else { if(a[i]==result3) { times3++; } else { times1--; times2--; times3--; } } } } } } } cout<<"水王为:"<<endl<<result1<<endl<<result2<<endl<<result3<<endl; return 0; }
实验心得:
这个实验真是拖了好久,我记得是上个星期就已经布置下来的作业,今天才想着来做它。水王2是在上一篇水王的基础上完成的,上次是二分之一,这次是四分之一,真是够了,如果可以用最笨的方法,它好像早就解决了,非得考虑时间复杂度。考虑就考虑吧,反正也做出来了。