zoukankan      html  css  js  c++  java
  • 软件工程课堂练习--找出“水王”

    一、题目要求

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

          如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者ID在其中,请设计算法快速找到这个传说中的“水王”。

    二、设计思路

      程序的设计思路大体就是,首先设2个变量,将第一个数暂时给shuiwang这个变量并且和下一个数比较,如果相同则用一个X变量自加一,不同则减一;如此循环,如果遇到不同时,一直减减减,x变为0,shuiwang又被新的数覆盖,以此类推,找到最终的水王ID。

    三、源代码

     1 / 123.cpp : Defines the entry point for the console application.
     2 //
     3 
     4 #include "stdafx.h"
     5 
     6 
     7 int findshuiwang(int arrID[],int num)
     8 {
     9     int shuiwang;
    10     int x;
    11     for(int i=x=0;i<num;i++)
    12     {
    13         if(x==0)
    14         {
    15             shuiwang=arrID[i],x=1;
    16         }
    17         else
    18         {
    19             if(shuiwang==arrID[i])
    20             {
    21                 ++x;
    22             }
    23             else
    24             {
    25                 --x;
    26             }
    27         }
    28     }
    29     printf("这个“水王”的ID就是:");
    30     printf("%d
    ",shuiwang);
    31     return shuiwang;
    32 }
    33     
    34 
    35 
    36 int main(int argc, char* argv[])
    37 {
    38     int arry[6]={11110,11110,11110,11110,11112,11112};
    39     findshuiwang(arry,6);
    40     return 0;
    41 }

    四、实验截图

    五、实验总结

      一开始想到的是先排序,然后水王的ID就在1/2处数组的地方,可是如果是这样的话时间复杂度绝不是f(n),所以这种方法OUT...

    后来经过老师的提示,采用消消乐的方法,将不同的消去,相同的留下那最后剩下的“水王”可定就在其中。不过在实现时就碰到了问题,是1,2;3,4;..这种数组顺序比较还是1,2;2,3;3,4..这样比较,还要区别开来,不然就会出错

  • 相关阅读:
    CSS------制作一个带+-的input框
    rest简介
    flask之flask-login登陆验证(一)
    Python之异常设计(一)
    flask之flask-sqlalchemy(一)
    flask之wtforms 表单验证(一)
    三 Django模型层之Meta
    二 Djano模型层之模型字段选项
    一 Django模型层简介
    Django之路由、模板和模型系统 (转载)
  • 原文地址:https://www.cnblogs.com/caomeina/p/4445806.html
Copyright © 2011-2022 走看看