寻找水王续

一、题目

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

三、运行结果:

原文地址:https://www.cnblogs.com/dgj1314/p/5612714.html