寻找水军

一、题目要求

 随着论坛的发展,管理员发现水王没有了,但是统计结果表明,有三个发帖很多的ID。据统计他们的发帖数量超过了1/4,你能从发帖列表中快速找到他们吗?

二、设计思路

本次题目是在上次寻找“水王”的基础上进行拓展,设计思路和上次的相似,上次寻找水王是用的一个水王变量,一个计数变量,那么本次的设计思想沿用上次的技巧,有三个水军变量,三个计数变量;分别使水军的这三个变量和下一个数比较,然后和三个水军相对应的计数变量分别进行计数,相同则加一,不同则抵消减一;依次循环,和水王的规则类似,最后找到3个水军

三、程序代码

#include "stdafx.h"

void findshuijun(int arrID[],int num)
{
    int shuijun1=0,shuijun2=0,shuijun3=0;
    int x1=0,x2=0,x3=0;
    for(int i=0;i<num;i++)
    {
        if(x1==0 && arrID[i]!=shuijun2 && arrID[i]!=shuijun3)
        {
            x1=1;
            shuijun1=arrID[i];
        }
        else if(x2==0 && arrID[i]!=shuijun1 && arrID[i]!=shuijun3)
        {
            x2=1;
            shuijun2=arrID[i];
        }
        else if(x3==0 && arrID[i]!=shuijun1 && arrID[i]!=shuijun2)
        {
            x3=1;
            shuijun3=arrID[i];
        }
        else if(arrID[i]!=shuijun1 && arrID[i]!=shuijun2 && arrID[i]!=shuijun3)
        {
            x1--;
            x2--;
            x3--;
        }
        else if(arrID[i]==shuijun1)
        {
            x1++;
        }
        else if(arrID[i]==shuijun2)
        {
            x2++;
        }
        else if(arrID[i]==shuijun3)
        {
            x3++;
        }       
    }
    printf("三个水军的ID分别是:%d、%d、%d
",shuijun1,shuijun2,shuijun3);

}



int main(int argc, char* argv[])
{
    int arry[15]={110,110,111,112,113,111,111,112,110,110,112,112,111,113,114};
    findshuijun(arry,15);
    return 0;
}

四、程序实现截图

五、体会

开始出来的结果不正确,经过调试才发现水军和计数变量没有初始化;这次实验是和同学一起讨论想到的,在设置变量的时候一开始遇到了困难,后来经过一点点的分析才最终解决。

原文地址:https://www.cnblogs.com/qinxian0/p/5546303.html