寻找小水王
一、题目
三人行设计了一个灌水论坛。信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他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;
}
运行结果: