zoukankan      html  css  js  c++  java
  • 软件工程随堂小作业—— 寻找“水王”(C++)

    一、设计思路

    (1)输入发帖ID记录表

    (2)从第一个ID开始,与后续的发帖ID进行比较,若相同计数器则加一,否则减一。若计数器的数值被减为零,则重新选取当前ID开始记录比较。

    (3)输出结果

    二、源代码

     1 // shuiwang.cpp : Defines the entry point for the console application.
     2 //
     3 
     4 #include "stdafx.h"
     5 #include "iostream.h"
     6 #define MAXSIZE 20
     7 
     8 void FindWater(int ID[],int len,int &water)
     9 {
    10     int counter=0;                    //计数器
    11     for(int i=0;i<len;i++)
    12     {
    13         if(counter==0)                //若计数器为零
    14         {
    15             water=ID[i];            //记录下当前发帖的ID作为水王嫌疑人
    16             counter++;
    17         }
    18         else
    19         {
    20             if(water==ID[i])        //若水王嫌疑人与下面的ID相同
    21                 counter++;            //计数器记录下来,否则减一
    22             else
    23                 counter--;
    24         }
    25     }
    26 }
    27 int main(int argc, char* argv[])
    28 {
    29     int ID[MAXSIZE];                //发帖记录表
    30     int num,WaterKing;                //发帖数目、水王
    31     cout<<"请输入帖子的数量:";
    32     cin>>num;
    33     cout<<"请输入发帖ID:";
    34     for(int i=0;i<num;i++)
    35     {
    36         cin>>ID[i];
    37     }
    38     FindWater(ID,num,WaterKing);
    39     cout<<"水王是:"<<WaterKing<<endl;
    40     return 0;
    41 }

    三、实验截图

    四、心得体会

      这个程序其实不难,因为最笨的方法比较简单。但是老师让我们对算法进行优化,要求时间复杂度为O(n),这就有点难度了。我一开始并没有想出来如何优化,于是老师提示我们对发帖记录表做减法,要消消乐。我和同桌讨论出了一种相邻ID不同则消的算法,我们测试了几组数据发现行之有效。就在我们沾沾自喜的时候,另一个同学提出了一种情况,这种算法无法找出改组数据的真正的水王。下课以后我思考了很久,但是都没法解决。最后我请教了别的同学,我把他的思想搞明白之后有自己写的这个程序。

  • 相关阅读:
    TCP源码—连接建立
    TCP系列02—连接管理—1、三次握手与四次挥手
    TCP系列01—概述及协议头格式
    ubuntu软件管理apt与dpkg
    318. Maximum Product of Word Lengths
    317. Shortest Distance from All Buildings
    316. Remove Duplicate Letters
    315. Count of Smaller Numbers After Self
    314. Binary Tree Vertical Order Traversal
    313. Super Ugly Number
  • 原文地址:https://www.cnblogs.com/JJJanepp/p/4448841.html
Copyright © 2011-2022 走看看