• 找水王


    一、题目:

          现有一个灌水论坛,信息学院的学生都喜欢在上面交流灌水。传说在论坛上有一个“水王”,它不但喜欢发帖,还会回复其他ID发的每个帖子。坊间风闻该“水王”发帖数目已超过了帖子数目的一半。

          如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者ID在其中,请设计算法快速找到这个传说中的“水王”。

    二、设计思路:

        因为水王的博客超过了一半,所以任意消除两个不一样的,一直消,最后剩下的就是水王的。

    三、源代码:

    #include<iostream.h>
    #include<stdlib.h> 
    #define MAXSIZE 100
    
    typedef struct
    {
        int *base;
        int *top;
        int stacksize;
    }SqStack;
    
    int InitStack(SqStack &S)
    {
        S.base=new int[MAXSIZE];
        if(!S.base)
            exit(OVERFLOW);
        S.top=S.base;
        S.stacksize=MAXSIZE;
        return OK;
    }
    
    
    int main()
    {
        int ID[MAXSIZE],k=0,n;
        cout<<"请输入所有的ID号:(以-1结束)"<<endl;
        for(int j=0;;j++)
        {    
            cin>>n;
            if(n==-1)
                break;
        
            ID[j]=n;
            k++;
        }
        int e,m;
        SqStack S;
        InitStack(S);
    for(int i=0;i<k;i++)
        {
            
            if(S.top==S.base)
            {
                *S.top++=ID[i];
            }
            int num=*(S.top-1);
            if(num!=ID[i+1]&&i<k-1)
            {
                e=*--S.top;
                i++;
            }
            else
            {
            *S.top++=ID[i+1];
            }
            if(i==k-2)
            {
                num=*(S.top-1);
                cout<<"水王的Id号为:"<<endl;
                cout<<num<<endl;
            }
        }
        return 0;
    }

    四、运行结果:

    五、实验总结

      本来是想的最笨的方法,遍历所有的,再一一比较,但是这样子方法太笨,不好实现。经过课堂上和老师同学们讨论,发现了两两不同消除之后就是水王的,这个重大发现,对写程序提供了思想指导。今后携程学前一定要寻求一个简单有效的方法,在去用程序实现。

  • 相关阅读:
    01
    py5.30
    py 5.28
    py5.25
    py 5.24
    py 5.22
    py5.21
    py 5.18
    py 5.17
    py 5.16
  • 原文地址:https://www.cnblogs.com/yanyafeng/p/4448451.html
Copyright © 2020-2023  润新知