课堂练习-找水王续

一、题目

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

二、设计思路:

      这个题和原来的题基本相似都可用消除思想。上一个题是两两比较这个可以三个比较。若不一样,则消除,若一样,加一。

三、源代码

#include "stdafx.h"
#include "iostream.h"
#define MAXSIZE 30


void Find(int ID[], int len,int water[])
{
    int counter[3];                    
    counter[0]=counter[1]=counter[2]=0;
    water[0]=water[1]=water[2]=-1;   
    for(int i=0;i<len;i++)
    {
        if(counter[0]==0)            
        {
        counter[0]++;
        water[0]=ID[i];
        }
        else if(counter[1]==0)
        {
        counter[1]++;
        water[1]=ID[i];
        }
        else if(counter[2]==0)
        {
        counter[2]++;
        water[2]=ID[i];
        }
        else if(ID[i]==water[0])    
        {
        counter[0]++;
        }
        else if(ID[i]==water[1])
        {
        counter[1]++;
        }
        else if(ID[i]==water[2])
        {
        counter[2]++;
        }
        else                        
        {
             counter[0]--;
             counter[1]--;
             counter[2]--;
         }
    }
}

int main(int argc, char* argv[])
{
    int ID[MAXSIZE];            
    int number,WaterId[3];            
    cout<<"请输入帖子的数量:";
    cin>>number;
    cout<<"请输入发帖ID:";
    for(int i=0;i<number;i++)
    {
        cin>>ID[i];
    }
    Find(ID,number,WaterId);
    cout<<"水王是:";
    for(i=0;i<3;i++)
    {
        cout<<WaterId[i]<<" ";
    }
    cout<<endl;
    return 0;
}

四、截图

五、总结

这次的题目和上一次的题目差不多,上一次是两个两个消除,而这一次是三个三个消除。具体写程序的时候和上次还是有点不一样的。还有就是通过和同学们讨论和查找资料能学到很多。

posted @ 2015-04-28 11:10  燕亚峰  阅读(135)  评论(0编辑  收藏  举报