软件工程作业--找水王

UNIN队设计了一个灌水论坛。信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子。坊间风闻该“水王”发帖数目超过了帖子数目的一半。

如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者的ID也在其中,你能快速的找到这个传说中的水王吗?

 

思路:删贴,水王发帖数目超过了帖子数目的一半,我们从列表头开始匹配,每匹配到一个不一样的就把俩帖子都删了,遇到一样的就删一个留一个。

#include<iostream>
#include<string>
#define N 10     //可以定义列表长度

using namespace std;
int main()
{
    string king;
    //定义列表
    string IdList[N]={"2","3","1","3","1","1","7","1","2","3"};
    //假设第一个id是水王
    int i=0;
    int num=1;
    king=IdList[0];
    for(i=1;i<N;i++)
    {
        //如果当前id和king id不同
        if(IdList[i]!=king)
        {
            //num-1
            num=num-1;
            //num为0,将下一个id 设为 king,并直接跳过下一次循环,并将 num设为1
            //若num不为0,king 不变
            if(num==0)
            {
                king=IdList[i+1];
                i=i+1;
                num=1;
            }
        }
        //若id和king id相同,num+1
        else
        {
            king=IdList[i];
            num=num+1;
        }
    }
    cout<<"要找的水王的 id 为:"<<king<<endl;
    return 0;
}

 个人总结:遇到问题多思考,多动动脑子。

posted @ 2020-05-27 19:24  XiaoGao128  阅读(131)  评论(0编辑  收藏  举报