zoukankan      html  css  js  c++  java
  • 找水王

    一、题目:

          现有一个灌水论坛,信息学院的学生都喜欢在上面交流灌水。传说在论坛上有一个“水王”,它不但喜欢发帖,还会回复其他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;
    }

    四、运行结果:

    五、实验总结

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

  • 相关阅读:
    Ubuntu18.04+windows10双系统时间同步教程
    Ubuntu官方源
    Ubuntu 16.04下OLSR协议安装教程
    Ubuntu 18.04中的Vim编辑器的高级配置
    关于vue-cli的安装
    var与let、const的区别
    jq点击相册弹出弹窗并可以轮播相册效果
    css三角形上下左右实心空心尖角箭头
    leetcode-44. Wildcard Matching
    c++转换构造函数和类型转换函数
  • 原文地址:https://www.cnblogs.com/yanyafeng/p/4448451.html
Copyright © 2011-2022 走看看