《 找水王》

                                                           《 找水王》

问题描述:已知某个论坛的帖子汇总列表,要找出其中的水王(即发的帖子数超出了总帖子数的一半),求解水王的IP地址;

设计思想:故名思意,一个帖子对应着一个IP地址,只要设计相关的思路遍历一遍帖子汇总列表,即可找出水王的IP地址;

具体做法:(1)设计一个变量作为遍历过程中来判断是否变换IP地址的基准,而基准指的是如若此变量小于0,则再进行遍历下一个IP地址前,把当前的IP地址赋予另一个变量;

(2)这里所指的另一个变量指的是基IP地址,然而之前作为判断IP地址是否更换的变量是根据把当前的IP地址和基IP地址进行比对后决定的,如若相等,则让基准变量增加一,否则减一;

(3)然而都知道,我们是根据基准变量的取值大小来决定水王的IP地址的(水王的IP地址即是当基准变量最大时,所遍历到的IP地址)。

源代码:

//已知发表帖子列表,找出其中的水王(即发表的帖子数大于总贴的一半)
//李敏,May 16th,2015
#include <iostream>
using namespace std;

void main()
{
    int n,i,a[1000],t,p,q,m,l;
    cout<<"请输入共发表的帖子总数:"<<endl;
    cin>>n;
    cout<<"请依次输入各个帖子的IP地址"<<endl;
    for(i=0;i<n;i++)
    {
        cin>>a[i];
    }
    t=0;
    q=a[0];
    p=0;
    for(i=1;i<n;i++)
    {
        if(a[i]==q)
        {
            t++;
            if(t>=p)
            {
                p=t;
                m=a[i];
            }
            q=a[i];
        }
        else
        {
            l=t--;
            if(l<0)
            {
                t=0;
                q=a[i];
            }
            else
            {
                t=l;
                q=a[i];
            }
        }

    }
    cout<<"找到的水王的IP地址为:"<<m<<endl;
    
}

实验结果截图:

编程总结:(1)说实话,第一次看问题的时候真心把题目的意思给理解错了,后来在老师的提醒后,理解了题目的意思,但还没有想出解决的方法;

(2)在听了同学的思路后,有点感觉了,但是感觉对于此设计还有些模糊;

(3)后来自己举了一些例子后,再根据课上同学的思路,发现了例子中存在的规律了,基本上再设计代码时已经没有问题了;

(4)在对代码进行设计中,虽然遇到了一些问题,但是再好好思考后还是解决了;

(5)总之,无论在解决什么问题是时,动脑,动手,善于沟通交流,再加上坚持不懈的努力总会有一些收获的!

原文地址:https://www.cnblogs.com/Twinklelittlestar/p/4507463.html