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

    一、题目要求

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

    二、设计思想

      水王问题就是根据消消乐游戏的一个变形,消消乐是消除相同的图案,而找出水王则是删掉相邻的不同的ID,由于“水王”发帖数目超过了帖子数目的一半,这样剩下的ID一定是水王的ID。这样就满足了时间复杂度为O(n)的要求。

    三、代码实现

     1 #include<iostream.h>
     2 void main()
     3 {
     4     int arr[10]={3,3,6,4,3,5,3,3,7,3};//假设的ID号
     5     int shuiwang = 0; 
     6     int count=0;  //标记
     7     cout<<"假设有10个ID,分别为:";
     8     for(int i=0;i<10;i++)
     9     { 
    10         cout<<arr[i]<<"  ";
    11         if(count == 0)
    12         { 
    13             shuiwang = arr[i]; 
    14             count = 1; 
    15         } 
    16         else
    17         { 
    18             if(shuiwang == arr[i]) 
    19                 count ++; 
    20             else  
    21                 count --; 
    22         } 
    23     }
    24     cout<<endl<<"水王的ID是"<<shuiwang<<endl;
    25 }

    四、运行截图

    五、实验总结

       在刚开始思考这个问题的时候,用了最笨的方法,就是先排序,由于“水王”发帖数目超过了帖子数目的一半,然后发现中间的ID一定是水王的ID,不过这样的时间复杂度最小是O(n+lg(n)),不满足老师的要求,所以只能一次遍历然后就找到水王的ID。在实现的过程中改了好多次,总是不太顺利,不过最终在同学的帮助下还是完成了!

  • 相关阅读:
    cpu capacity、task_util、cpu_util是如何计算的?
    QTI EAS学习之find_energy_efficient_cpu
    Linux内核进程调度overview(1)
    Ondemand和Interactive gonernor工作逻辑简述
    利用init进程监控底层节点的方法架构
    Sched_Boost小结
    SchedTune
    Cpusets学习
    搭建SpringCloud微服务框架:三、读取Nacos的配置信息
    搭建SpringCloud微服务框架:一、结构和各个组件
  • 原文地址:https://www.cnblogs.com/czl123/p/4448282.html
Copyright © 2011-2022 走看看