一、设计思路

(1)输入发帖ID记录表

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

(3)输出结果

二、源代码

 // shuiwang.cpp : Defines the entry point for the console application.
// #include "stdafx.h"
#include "iostream.h"
#define MAXSIZE 20 void FindWater(int ID[],int len,int &water)
{
int counter=; //计数器
for(int i=;i<len;i++)
{
if(counter==) //若计数器为零
{
water=ID[i]; //记录下当前发帖的ID作为水王嫌疑人
counter++;
}
else
{
if(water==ID[i]) //若水王嫌疑人与下面的ID相同
counter++; //计数器记录下来,否则减一
else
counter--;
}
}
}
int main(int argc, char* argv[])
{
int ID[MAXSIZE]; //发帖记录表
int num,WaterKing; //发帖数目、水王
cout<<"请输入帖子的数量:";
cin>>num;
cout<<"请输入发帖ID:";
for(int i=;i<num;i++)
{
cin>>ID[i];
}
FindWater(ID,num,WaterKing);
cout<<"水王是:"<<WaterKing<<endl;
return ;
}

三、实验截图

四、心得体会

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

软件工程随堂小作业—— 寻找“水王”(C++)的更多相关文章

  1. 软件工程随堂小作业——寻找“水桶”(C++)

    一.设计思想 思路与寻找一个水王相似,这次只是计数器和嫌疑人变量都设置为数组.每次选取一个ID与三个嫌疑人比较,若有相同则计数:若三个都不相同,则三个计数器都减一.若减为0,则从新赋值给嫌疑人. 二. ...

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

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

  3. 软件工程随堂小作业——(C++)

    一.设计思路 本来我的思路是根据上楼的人数和上楼的层数来计算出平均值,但是我发现这个思路不对.于是我选择了最笨的方法,复杂度为O(n2). (1)输入坐电梯的人数和要去的楼层: (2)找到输入楼层里最 ...

  4. 软件工程随堂小作业——最优惠价钱(C++)

    一.设计思路 前提,没有买重复书的情况是最优惠的.总共买n本书,可以分解成5k+(n-5k),k=0,1,2,...1.如果k=0,n本不重复的价钱是最优惠的:2.如果k=1,算出每一种情况的折扣并比 ...

  5. 软件工程随堂小作业——随机四则运算Ⅱ之算法思路(C++)

    1.题目避免重复: (1)利用系统时间来产生随机数,重复率会降低. (2)建立链表,逐个判断.可读取写入文件. 2.可定制(数量/打印方式): (1)格式有默认值; (2)可以选择重新设置分几列和每行 ...

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

    一.设计思路: 1.程序的主体部分是循环输出,次数即题目数目由用户输入: 2.三个整型变量+rand函数来实现随机数四则运算,一个变量代表加减乘除,另外两个用作运算数: 3.用户体验:题目分三列,排列 ...

  7. 福州大学软件工程1816 | W班 第8次作业[团队作业,随堂小测——校友录]

    作业链接 团队作业,随堂小测--校友录 评分细则 本次个人项目分数由两部分组成(博客分满分40分+程序得分满分60分) 博客和程序得分表 评分统计图 千帆竞发图 总结 旅法师:实现了更新,导出,查询, ...

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

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

  9. 福州大学软件工程1816 | W班 作业成绩排名汇总

    评分链接 第一次作业--准备篇 第二次作业--个人项目实战 第三次作业--原型设计(结对第一次) 第四次作业--团队展示(团队) 第五次作业--项目选题报告(团队) 第六次作业--结对第2次作业--W ...

随机推荐

  1. Solaris桌面CDE

    /usr/dt/bin:应用程序/usr/dt/lib:运行时共享库/usr/dt/config:默认系统配置文件/usr/dt/man:手册页/usr/dt/app-defaults:默认应用程序资 ...

  2. java实现 swing模仿金山打字 案例源码

    java实现 swing模仿金山打字 案例源码,更多Java技术就去Java教程网.http://java.662p.com 代码: <font size="3">im ...

  3. IntelliJ IDEA 快捷键和设置

    IntelliJ IDEA 使用总结 http://my.oschina.net/xianggao/blog/97539 IntelliJ IDEA 问题解决:1.乱码,主要是快捷键的字样显示乱码 中 ...

  4. .NET Web开发总结(五)

    7 常用服务器控件 7.1 服务器控件概述 · 服务器控件是指在服务器上执行程序的代码的组件 通常这些服务器控件会提供    给用户一定的界面,  以便用户与服务器之间快速的交互 7.2 HTML 服 ...

  5. 深入浅出HTML与XHTML的区别

    HTML(HyperText Markup Language,超文本标记语言)最早的HTML官方正式规范,是1995年IETF(Internet Engineering Task Force,因特网工 ...

  6. Windows2003 IIS开启Gzip网页压缩

    1.单击"开始"-"管理工具"-"Internet 信息服务(IIS)管理器",打开IIS管理器:2.在 "IIS 管理器&quo ...

  7. Knockout.Js官网学习(监控属性Observables)

    前言 1.创建一个ViewModel <script type="text/javascript"> //1.创建一个ViewModel var myViewModel ...

  8. (function ( ){})( ) 与 (function ( ){}( )) 有什么区别?

    js立即执行函数: (function ( ){})( ) 与 (function ( ){}( )) 有什么区别? 转自:http://www.jb51.net/article/75089.htm ...

  9. 点击后弧形展开的炫酷菜单--第三方开源-- CircularFloatingActionMenu(一)

    CircularFloatingActionMenu在github上项目主页地址:https://github.com/oguzbilgener/CircularFloatingActionMenu ...

  10. PHP-You don’t have permissions to access xxx on this server!

    问题如下图:   如果你是想要查看目录下的每一个文件,那么你需要修改一下httpd-conf配置文件,也就是apache的配置文件,以phpStudy2013为例,如下图打开: 然后找到如下部分,添加 ...