寻找水王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;

}

四、截图

寻找水王2

五、总结

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

你可能感兴趣的:(寻找水王2)