找水王。

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

解题思路:默认第一个id为水王,遍历之后的id,若一样,水王不变,time加一;若不一样,time减一,若为0,水王更新,直到遍历结束。

代码:

#include<iostream>
using namespace std;
int findTheKingOfTheWater(int *id,int number)
{
    int water;
    int time; 
    for(int i = time = 0;i < number;i++)
    {
        if(time == 0)
        {
            water = id[i];
            time = 1;
        }
        else
        {
            if(water == id[i])
            {
                time++;
            }
            else  
            {
                time--;
            }
        }
    }
    return water;
 } 
 
 void main()
 {
     int id[11]={4,4,3,7,5,4,5,4,5,4,4};
     cout << "水王为" << findTheKingOfTheWater(id,11) << endl;
 }

局限性:如果水王帖子没有超过一半则查找失败。

原文地址:https://www.cnblogs.com/shenshenxin/p/5512970.html