寻找水王2

一、题目

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

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

随着论坛的发展,管理员发现水王没有了,但是统计结果表明,有三个发帖很多的ID。据统计他们的发帖数量超过了1/4,你能从发帖列表中快速找到他们吗?

二、设计思想

   这次寻找的ID有三个,所以我们用三个标记来计数,当三个标记有空位时,ID直接放入,并开始计数,如果没有空位,比较新的ID和三个标记ID,如果与其中某一个相同,那个标记就计数增加,如果没有,那么所有的标记都减少。

三、源代码

  

//  #include <stdafx.h>
#include <iostream.h>


int main(int argc, char* argv[])
{
    int n[16]={2,9,7,2,2,3,3,2,4,3,5,5,3,5,3,2};
    int tienum; 
    int i,j;
    int shui[3]={0,0,0},k[3]={0,0,0};
    tienum=16;
/*    cout<<"请输入帖子总数:";
    cin>>tienum;
    cout<<endl;
    for(i=0;i<tienum;i++)
    {
        cout<<"请输入第"<<i+1<<"个帖子的ID:";
        cin>>a[i];
    }*/
    for(i=1;i<tienum;i++)
    {

         if (shui[0]==n[i])
            k[0]++;
         else if (shui[1]==n[i])
            k[1]++;
         else if (shui[2]==n[i])
            k[2]++;
        else if (k[0]==0)
        {
            shui[0]=n[i]; 
            k[0]++;
        }
        else if (k[1]==0)
        {
            shui[1]=n[i]; 
            k[1]++;
        }
        else if (k[2]==0)
        {
            shui[2]=n[i]; 
            k[2]++;
        }
        else
        {
            k[0]--;
            k[1]--;
            k[2]--;
        }
        
        
    }
    cout<<"水王ID是:"<<shui[0]<<""<<shui[1]<<""<<shui[2]<<endl;
    return 0;
}

四、截图

五、总结

方法都一样,只不过量增加了,多思考一点就能进步一点

posted on 2015-04-30 15:17  菠萝吃么  阅读(192)  评论(0编辑  收藏  举报

导航