zoukankan      html  css  js  c++  java
  • 课堂练习-找水王

    题目:三人行设计了一个灌水论坛。信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子。坊间风闻该“水王”发帖数目超过了帖子数目的一半。
            如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者的ID也在其中,你能快速的找到这个传说中的水王吗?

    解题思路:根据课堂上的讨论,设计应为时间复杂度为O(n)。采用消除法来对问题求解:相邻两个ID若不同即消除,留在最后的一定是水王ID(题目中“发帖数目超过了帖子数目的一半”非常重要)。程序中给出的ID账号假定为10个。

    程序代码:

    #include<iostream.h>
    int main()
    {
        int a[10];
        cout<<"请输入10个id账号:"<<endl;
        for (int k=0;k<10;k++)
        {
            cin>>a[k];
        }
        int temp=a[0];
        int j=1;
        for (int i=1;i<10;i++)
        {    
            if(a[i]==a[0])
                j++;                
            else    
                j--;
            if(j==0)
            {
                temp=a[i+1];
                j=1;
            }
        }
            cout<<"水王的账号id为:"<<temp<<endl;
            return 0;
    }

    程序截图:

     

    思考总结:

       在设计程序中,首先想到的是判断相邻俩ID是否相同,以此为首要条件进行编程。但是并没有达到Id相消的效果,结果越做越乱。打破思维之后,考虑到使用计数的方法。以基数为1、第一个ID为基础,相同累加,不同累减,当其为0时,得出此数相消。在程序的失败中,又重新加深了C的基础语言编程能力,程序成功后,代码也并不是想象之中的那么难。只是没有想到恰当的方法。

  • 相关阅读:
    Arcgis silverlight4 Sublayerlist
    U盘不显示盘符
    Error: The spatial references do not match
    如何让你的SQL运行得更快
    Arcgis silverlight3 layerlist
    oracle客户端登陆
    Arcgis silverlight1 地图显示
    通过BAT文件部署windows服务
    在博客园安家了
    java中static作用详解
  • 原文地址:https://www.cnblogs.com/cainiao1hao/p/4448495.html
Copyright © 2011-2022 走看看