一、设计思路

(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不同则消的算法,我们测试了几组数据发现行之有效。就在我们沾沾自喜的时候,另一个同学提出了一种情况,这种算法无法找出改组数据的真正的水王。下课以后我思考了很久,但是都没法解决。最后我请教了别的同学,我把他的思想搞明白之后有自己写的这个程序。

转载于:https://www.cnblogs.com/JJJanepp/p/4448841.html

软件工程随堂小作业—— 寻找“水王”(C++)相关推荐

  1. 软件工程随堂小作业——随机四则运算Ⅱ(C++)

    一.设计思路 设计思路已给出,此处不再赘述. 二.源代码 (1)四则运算2.cpp(源文件) 1 // 四则运算2.cpp : Defines the entry point for the cons ...

  2. 软件工程课堂作业——寻找“水王”

    一.题目: 三人行设计了一个灌水论坛.信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个"水王",他不但喜欢发帖,还会回复其他ID发的每个帖子.坊间风闻该"水王&qu ...

  3. 【评分】团队作业-随堂小测(同学录)

    [评分]团队作业-随堂小测(同学录) 总结 按时交 - 有分 晚交 - 0分 迟交一周以上 - 倒扣本次作业分数 抄袭 - 倒扣本次作业分数 本次作业 日不落战队 涉及的训练环境较其他组多(在博客中体 ...

  4. [福大软工] Z班 团队作业——随堂小测(同学录) 作业成绩

    团队作业--随堂小测(同学录) 作业链接 http://www.cnblogs.com/easteast/p/7763645.html 作业情况 本次作业从原先预计的3小时,有些组打了鸡血连续肝了4. ...

  5. 软件工程第三次作业——软件质量保证鄙见

    阅读教材第14章及课后参考文献  写一篇关于软件质量保障的博文 参考文献: 两种不同的声音(1)https://coolshell.cn/articles/6994.html (2)https://w ...

  6. 2022北航敏捷软件工程 第一次博客作业

    2022北航敏捷软件工程 第一次博客作业 项目 内容 这个作业属于哪个课程 2022年北航敏捷软件工程 这个作业的要求在哪里 个人阅读作业-阅读和调研 我在这个课程的目标是 了解软件工程的方法论.在实 ...

  7. 17秋 软件工程 第六次作业 Beta冲刺 总结博客

    题目:团队作业--Beta冲刺 17秋 软件工程 第六次作业 Beta冲刺 总结博客 Beta冲刺过程中各个成员的贡献百分比 世强:15.5% 陈翔:14.5% 树民:12.0% 媛媛:14.0% 港 ...

  8. 随堂小测app(nabcd)

    N 现在,老师想要组织测验,需要提前印制试卷,费时费力,考勤采取传统的点名的方式,过程繁琐且结果水分大. 而随堂小测app通过在线答题,智能定位可以帮助老师掌握学生对知识的掌握程度,了解学生的到客情况 ...

  9. 软件工程第八次作业-2017282110249

    软件工程第八次作业-2017282110249 软件工程课程结课自我总结 一.承诺和期望 首先,我觉得在本次课程中我学到和收获了自己想要的东西.学会了结对编程中自我批判与虚心学习,学会了团队作业中协作 ...

最新文章

  1. Await, and UI, and deadlocks! Oh my!
  2. mysql-理想的索引
  3. itertools中常用的工具(chain,islice)
  4. BF,KMP,BM三种字符串匹配算法性能比较
  5. iOS自动化打包之重签名导出不同证书ipa探索
  6. FastThreadLocal
  7. 高考辽宁理工高考计算机专业分数,辽宁高考985分数线2019-985大学在辽宁省的录取分数线及位次...
  8. Python中的函数概述
  9. C#获取周一、周日的日期 函数类
  10. ASP.NET配置设置-关于web.config各节点的讲解
  11. Codeforces914D Bash and a Tough Math Puzzle (思维 线段树)
  12. matlab求组合数不想求组合数矩阵,【潘德的预言】用关系模型与组合数计算NPC最大相容人数和所有组合...
  13. 详解u盘装系统找不到镜像文件怎么回事
  14. iText生成pdf带目录
  15. mysql退出安全模式_MySQL数据库之mysql 解除安全模式
  16. 【计算机组织与体系结构】实验二:给定指令系统的处理器设计
  17. C语言中write函数
  18. 我们是一个团结、有力、强大的团队
  19. js判断两个时间是否超过一年
  20. localhost和127.0.0.1都无法打开的解决方法

热门文章

  1. ERROR 程序出错,错误原因:'bytes' object has no attribute 'read'
  2. 《iOS 9 开发指南》——第6章,第6.7节iOS 9控件的属性
  3. 自定义注解 相关知识汇总(转)
  4. 通用软部件(通用管理信息系统)的研究与生产
  5. Ubuntu 11.04 beta 2发布!
  6. sample等价是什么错误_一个复制粘贴引发的有趣小错误及思考
  7. java语言发展历程
  8. android手机 代码下载,android手机NFC 示例源码下载
  9. 使用fio测试磁盘I/O性能
  10. 阿里 异构数据 mysql_异构数据库迁移