找水王2

一、题目
 
      三人行设计了一个灌水论坛。信息学院的学生都喜欢在上面交流灌水,传说在论坛上有3个“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子。坊间风闻该“水王”发帖 数目超过了帖子数目的四分之一。
 
  如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者的ID也在其中,你能快速的找到这个三个传说中的水王吗?
 
二、设计思想
 
      从头到尾遍历帖子列表,每次消四个不同的id,最后剩下的一定是3个小水王。
 
三、源代码
 

//找水王2
//王文奇 20132980 2016/5/26
#include<iostream>
using namespace std;
int main()
{
    int size = 0;
    int num[3] = { 0 };       //分别用于记录三个小水王的发帖数
    int WaterWang[3];
    cout << "请输入ID个数:";
    cin >> size;
    int *ID = new int[size];

    cout << "请输入ID(请保证三个小水王ID个数大于数量的1/4):" << endl;
    for (int i = 0; i < size; i++)
    {
        cin >> *(ID + i);
    }

    
    //寻找小水王
    for (int i = 0; i < size; i++)
    {
        if (num[0] == 0)
        {
            WaterWang[0] = ID[i];
            num[0]++;
            continue;
        }
        if (ID[i] == WaterWang[0])
        {
            num[0]++;
            continue;
        }
        if (num[1] == 0)
        {
            WaterWang[1] = ID[i];
            num[1]++;
            continue;
        }
        if (ID[i] == WaterWang[1])
        {
            num[1]++;
            continue;
        }
        if (num[2] == 0)
        {
            WaterWang[2] = ID[i];
            num[2]++;
            continue;
        }
        if (ID[i] == WaterWang[2])
        {
            num[2]++;
            continue;
        }

        for (int j = 0; j < 3; j++)
            num[j]--;
    }
    cout << "水王id为:";
    for (int j = 0; j < 3; j++)
        cout << WaterWang[j] << "     ";
    
    delete[] ID;

    return 0;
}

四、运行结果

五、总结

       这次与上次一样,只不过水王变成了3个,我们不能在两两消除了,我跟同学讨论了下,四四消除才是解决这问题的正解。

posted @ 2016-05-26 12:17  斗破2  阅读(191)  评论(0编辑  收藏  举报