zoukankan      html  css  js  c++  java
  • 寻找发帖"水王"

    一 题目要求:

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

    二 设计思路:

         由题意可知,水王帖子数目已超过一半,所以可以遍历一遍帖子,通过遍历,每次从帖子中除去两个不一样的ID,如果下一个ID与上一个ID一样,则可以用一个变量记录相同ID出现的次数,相同次数+1,不同则-1,最后可以得到水王ID。举一例子:其中s是上一个记录的ID,m是记录次数,初始值为0,相同记录+1,不同记录-1,由于水王回复了一半多帖子,所以最后一定为正值。

    帖子ID:"亮哥656","亮哥656","死神的镰刀","bingo","影零夕","不愿后悔","亮哥656","亮哥656","死亡咆哮","亮哥656","泪无痕","亮哥656","亮哥656"。

    i 0 1 2 3 4 5 6 7 8 9 10 11 12
    s  亮哥656  亮哥656  亮哥656  亮哥656  影零夕  影零夕  亮哥656 亮哥656  亮哥656   亮哥656  亮哥656  亮哥656  亮哥656
    m  1  2  1  0  1  0  1  2  1  2  1  2  3

    最后s就是那个水王ID。

    三 源码

    #include<iostream>
    #include<string>
    using namespace std;
    
    int main()  
    {  
        string id[13]={"亮哥656","亮哥656","死神的镰刀","bingo","影零夕","不愿后悔","亮哥656","亮哥656","死亡咆哮","亮哥656","泪无痕","亮哥656","亮哥656"};
        int m= 0,i;
        string s;
        for(i = 0; i < 13;i++)
        {
              if(m == 0)
              {
                  s = id[i];
                  m = 1;
              }
              else
              {
                  if(s == id[i])
                  {
                      m++;
                  }
                  else
                  {
                      m--;
                  }
              }
        }
        cout<<"水王ID是"; 
        cout<<s<<endl;
        return 0;  
    }  

    四 截图

    五 总结

            这道题主要在于抓住“水王帖子数目超过一半”这一关键点,然后通过两两不同ID相消,就可以得到了水王ID。我学到了在编程中要善于抓住重点,从这个点突破,就可以有设计思路,再整体优化,最后就能得到想要的结果。

  • 相关阅读:
    CSS3中三种清除浮动(float)影响的方式
    HTML中关于动态创建的标签无法绑定js事件的解决方法:.on()方法的 [.selector]
    Android 5.0以上heads up通知
    CoordinatorLayout
    ViewDragHelper
    Transition FrameWork
    Android启动过程
    不要滥用SharedPreference
    不要在Application中缓存数据
    SparseArray替代HashMap来提高性能
  • 原文地址:https://www.cnblogs.com/houtaoliang/p/4508017.html
Copyright © 2011-2022 走看看