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

    一、题目

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

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

    二、设计思想

           一开始的想法是遍历一遍记录每个id出现的次数,但这样牺牲了空间太大。后来老师提示用两两消除法,于是就用这个方法。先设两个值WaterWang,num,分别记录水王id和当前判定为水王id重复的次数(开始默认为1)。一开始默认第一个为水王id,两两相同时保留并num+1;两两不同时num-1,并舍弃该值,并且当num降至0时,要将将下一个数暂定为水王,num还原为1,继续循环。

     

    三、代码实现

     1 //找水王
     2 //王文奇 20132980 2016/5/16
     3 #include<iostream>
     4 using namespace std;
     5 int main()
     6 {
     7     int size = 0;
     8     int num = 1; //当前判定为水王ID重复的次数
     9     int WaterWang;
    10     cout << "请输入ID个数:";  
    11     cin >> size;
    12     int *ID = new int[size];
    13 
    14     cout << "请输入ID(请保证水王ID个数大于数量的一半):" << endl;
    15     for (int i = 0; i < size; i++)
    16     {
    17         cin >> *(ID + i);
    18     }
    19 
    20     WaterWang = ID[0]; //一开始默认为数组中的第一个数为水王
    21     for (int i = 1; i<size; i++)
    22     {
    23         if (WaterWang != ID[i])     //两两不同时舍弃
    24         {
    25             num = num - 1;   //水王次数减一
    26             if (num <= 0)    //当水王次数降至0以下时
    27             {
    28                 WaterWang = ID[i + 1];   //暂定下一个数为新水王
    29                 num = 1;  //水王次数重新赋为一
    30                 i++;   //跳过ID[i]的判断
    31             }
    32         }
    33         else                     //两两相同时暂定为水王
    34         {
    35             WaterWang = ID[i];
    36             num = num + 1;   //水王次数加一
    37         }
    38     }    
    39     cout << "水王id为:" << WaterWang << endl;    
    40     delete[] ID;
    41 
    42     return 0;
    43 }

     

    四、实现截图

     

                           

    五、个人总结

        一开始的想法很简单,但就是想不到更好的方法,在老师的提点下才完善了这个算法。总之,遇到问题还应多有些新想法。

  • 相关阅读:
    Oracle第五周测验
    软件测试第五周
    Oracle第四周作业
    c++第二章测试
    软件测试第四章
    软件测试 第三章
    Centos 安装.NET Core环境
    .net core 集成极光推送
    Swagger添加文件上传测试
    linux firewall
  • 原文地址:https://www.cnblogs.com/qwer111/p/5508923.html
Copyright © 2011-2022 走看看