• 课堂练习-寻找水王


    1.题目

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

    如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者的ID也在其中,你能快速的找到这个传说中的水王吗?

    2.思路

    要在一个O(n)时间复杂度中实现,使用的方法是,设置计数K,设置shui=a[0]比较shui和a[i],如果这两个数不一样就跳过这个数并且K-1,如果一样就设K++,当K<0的时候就重置shui=a[i+1],结束循环后就能获得水王ID为shui

    3.代码

    //  #include <stdafx.h>
      #include <iostream.h>
     
      
      int main(int argc, char* argv[])
     {
         int a[100];
         int tienum; 
         int i,j,k=1;
         int shui;
         cout<<"请输入帖子总数:";
         cin>>tienum;
         cout<<endl;
         for(i=0;i<tienum;i++)
         {
             cout<<"请输入第"<<i+1<<"个帖子的ID:";
             cin>>a[i];
        }
        shui=a[0];
         for(i=1;i<tienum;i++)
         {
             if(shui!=a[i])
             {
                 k=k-1;
                 if(k<0)
                 {
                     shui=a[i+1];
                     k=1;
                     i++;
                 }
             }
             else
             {
                 shui=a[i];
                 k=k+1;
             }
     
         }
         cout<<"水王ID是:"<<shui<<endl;
         return 0;
     }

    4.截图

    5.总结

      思路很巧妙,我自己已经想到了找出重复的ID做标记再与下一个重复的ID做比较处理,在看了别人的博客后才受启发,可以把重复的数量做计数来比较。

  • 相关阅读:
    tee:结果输出到文件同时也作为往后的输入信息
    hexdump:查看文件头部信息,以十六制形式查看文件
    删除大文件方法
    rename:批量更改文件名
    求从1加到100的结果
    简书里面的面试题
    开源好网站
    ubuntu 14上安装mysql离线包
    单点登录原理与简单实现---转
    Revit API 判断一个构件在某个视图中的可见性
  • 原文地址:https://www.cnblogs.com/boluoland/p/4446773.html
Copyright © 2020-2023  润新知