题目:
三人行设计了一个灌水论坛。信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子。坊间风闻该“水王”发帖数目超过了帖子数目的一半。如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者的ID也在其中,你能快速的找到这个传说中的水王吗?
设计思路:
(1)输入发帖ID记录表
(2)从第一个ID开始,与后续的发帖ID进行比较,若相同计数器则加一,否则减一。若计数器的数值被减为零,则重新选取当前ID开始记录比较。
(3)输出结果
源代码:
#include<iostream> using namespace std; int FindWaterKing(int IDNum[],int m,int &waterking) { int count=0,count1=0; //计数,相同帖子ID数目,水王 for(int i=0;i<m;i++) { if(count==0) //计数等于0 { waterking=IDNum[i]; //当前的ID为水王 count++; //计数加1 count1=0; count1++; } else //计数不等于0 { if(waterking==IDNum[i]) //当前ID等于水王 { count++; //计数加1 count1++; } else count--; //计数减1 } } return count1; } int main(){ int IDNum[100]; //存放帖子ID int n,waterking,num; //帖子数量,水王,相同帖子数目 cout<<"请输入帖子数量:"<<endl; cin>>n; cout<<"请输入帖子ID:"<<endl; for(int i=0;i<n;i++) { cin>>IDNum[i]; } num=FindWaterKing(IDNum,n,waterking); if(num>(n/2)) cout<<"水王是:"<<waterking<<endl; else cout<<"没有水王!!!"<<endl; }
截图:
四、个人总结
每次写程序都要进行边界测试,不然会出错的。
小组成员:杨涛 http://www.cnblogs.com/GloryYT/
时间: 2024-11-07 22:09:00