一、题目
三人行设计了一个灌水论坛。信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子。坊间风闻该“水王”发帖数
目超过了帖子数目的一半。 如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者的ID也在其中,你能快速的找到这个传说中的水王吗?但是随着论坛的发展,管理员
发现水王没有了,但是统计结果表明,有三个发帖很多的ID。据统计他们的发帖数量超过了1/4,你能从发帖列表中快速的找到他们吗?
二、代码
#include<iostream> #include<string> using namespace std; int main() { string shuiwang[3];//存储水王 int num[3];//记录水王的出现的次数 int NUM; cout<<"请输入帖子数量:"; cin>>NUM; string *tie = new string[NUM]; cout<<"输入"<<NUM<<"个贴子的主人:"; for(int i=0;i<NUM;i++) { cin>>tie[i]; } for(int i=0;i<3;i++) { shuiwang[i]=tie[i]; num[i]=0; } for(int yi=3;yi<12;yi++)//运算 { bool piPei=false;//用于判断是否下一个是否匹配 for(int er=0;er<3;er++)//循环匹配判断 { if(shuiwang[er]==tie[yi]) { num[er]++; piPei=true; break;//匹配,停止循环 } } if(!piPei)//匹配不成功 { bool er=false;//只替换一个shuiwang bool san=false;//用于判断是否有num【i】<0,有的话直接替换 for(int liu=0;liu<3;liu++) { if(num[liu]<0) san=true; } if(!san)//没有num【i】<0,所有的num-- { for(int san =0;san<3;san++) num[san]--; } for(int si=0;si<3;si++) { if (num[si]<0&&er==false)//只替换一个shuiwang { shuiwang[si]=tie[yi]; num[si]=0; er=true; } } } } cout<<"小水王为:"; for(int wu=0;wu<3;wu++)//输出小水王 { cout<<shuiwang[wu]<<" "; } return 0; }
三、运行结果: