找水王

题目:三人行设计了一个灌水论坛。信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子。坊间风闻该“水王”发帖数目超过了帖子数目的一半。 如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者的ID也在其中,你能快速的找到这个传说中的水王吗?

思路:根据上课的时候同学提供的思路,这个问题可以简化为若干个数字里找出重复最多的一个数字,首先设立一个计数的参数j1,从第一个id开始,如果有两个连续的不同就跳过,同时j1减1,两个连续的id相同j1加1,并把连续的id值赋值给i1

总结:主要是同学的思路打开了我的思维,把问题简化,找出重复次数最多的那个数字也就是水王,同时也告诉我学会集思广益,自己的想法总归是有局限性的

#include <iostream>
using namespace std;

int findwater(int m[20],int n){
    int i1=0,j1=0;                               //设立两个参数,i1记录水王id,j1计数,
    int i;
    for(i = 0;i < n;i++){
        if(i1 == 0 || j1 == 0){                  //若i1为0或者j1为0,为i1(重新)赋值m[i],同时j1加一
            i1 = m[i];
            j1++;
        }
        else if(i1 == m[i])                      //若两个id值连续,j1加一
            j1++;
        else j1--;
    }
    return i1;
}
int main(){
  
    int id[20] ,num;
    int i;
    cout<<"请输入发帖数:"<<endl;
    cin>>num;
    cout<<"请输入发帖id:"<<endl;
    for(i = 0;i < num;i++)
        cin>>id[i];
    cout<<"水王id为:  "<<findwater(id , num)<<endl;
    system("pause");
}

原文地址:https://www.cnblogs.com/laozhanghahaha/p/4513400.html