课堂练习-找水王续
一、题目
随着论坛的发展,管理员发现水王没有了,但是统计结果表明,有三个发帖很多的ID。据统计他们的发帖数量超过了1/4,你能从发帖列表中快速找到他们吗?
二、设计思路:
这个题和原来的题基本相似都可用消除思想。上一个题是两两比较这个可以三个比较。若不一样,则消除,若一样,加一。
三、源代码
#include "stdafx.h" #include "iostream.h" #define MAXSIZE 30 void Find(int ID[], int len,int water[]) { int counter[3]; counter[0]=counter[1]=counter[2]=0; water[0]=water[1]=water[2]=-1; for(int i=0;i<len;i++) { if(counter[0]==0) { counter[0]++; water[0]=ID[i]; } else if(counter[1]==0) { counter[1]++; water[1]=ID[i]; } else if(counter[2]==0) { counter[2]++; water[2]=ID[i]; } else if(ID[i]==water[0]) { counter[0]++; } else if(ID[i]==water[1]) { counter[1]++; } else if(ID[i]==water[2]) { counter[2]++; } else { counter[0]--; counter[1]--; counter[2]--; } } } int main(int argc, char* argv[]) { int ID[MAXSIZE]; int number,WaterId[3]; cout<<"请输入帖子的数量:"; cin>>number; cout<<"请输入发帖ID:"; for(int i=0;i<number;i++) { cin>>ID[i]; } Find(ID,number,WaterId); cout<<"水王是:"; for(i=0;i<3;i++) { cout<<WaterId[i]<<" "; } cout<<endl; return 0; }
四、截图
五、总结
这次的题目和上一次的题目差不多,上一次是两个两个消除,而这一次是三个三个消除。具体写程序的时候和上次还是有点不一样的。还有就是通过和同学们讨论和查找资料能学到很多。