一.题目

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

二.设计思路

  和之前的博客的找水王的思路类似,只不过这次变成了找三个而已,利用帖子的数量都超过了四分之一,将不一样的减一,一样的加一。

三.源代码

 

// 水桶.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include<iostream.h>
#define max 50                       //ID数组的最大值
/*ID号的输入*/
int input(int ID[])
{
    int length;
    cout<<"请输入ID的数量:";
    cin>>length;

    cout<<"请输入ID:"<<endl;
    for(int i=0;i<length;i++)        //ID号的输入
    {
        cin>>ID[i];
    }

    return length;                    //返回值是该ID数组的长度
}
/*寻找水桶*/
void searchst(int ID[],int length,int st[])
{
    int Count[3];                    //三个计数器
    Count[0]=Count[1]=Count[2]=0;    //给Count数组赋初值

    for(int i=0;i<length;i++)        //遍历一遍ID数组
    {
        if(Count[0]==0)              //若计数器为0,则相应的水桶=当前的ID,且相应的Count=1
        {
            st[0]=ID[i];
            Count[0]=1;
        }
        else if(Count[1]==0)
        {
            st[1]=ID[i];
            Count[1]=1;
        }
        else if(Count[2]==0)
        {
            st[2]=ID[i];
            Count[2]=1;
        }
        else if(st[0]==ID[i])        //若st与ID相等,则相应的计数器加一
        {
            Count[0]++;
        }
        else if(st[1]==ID[i])
        {
            Count[1]++;
        }
        else if(st[2]==ID[i])
        {
            Count[2]++;
        }
        else                        //若当前的ID与st都不相等,则三个计数器都减一
        {
            Count[0]--;
            Count[1]--;
            Count[2]--;
        }
    }
}
int main()
{
    int st[3];
    int ID[max];

    searchst(ID,input(ID),st);        //调用函数寻找水桶
    cout<<"水桶是:"<<endl;
    cout<<"\t(1)"<<st[0]<<endl<<"\t(2)"<<st[1]<<endl<<"\t(3)"<<st[2]<<endl;

    return 0;
}

四.结果及截图

  

  

五.心得

  刚开始的时候以为在给数组st初始化时需要将不同的三个值赋给它,后来在调试的时候发现,不管是不是一样,结果都是一样的。

posted on 2015-04-27 22:57  梦里侃花落  阅读(100)  评论(0编辑  收藏  举报