软件工程随堂小作业——寻找“水桶”(C++)
一、设计思想
思路与寻找一个水王相似,这次只是计数器和嫌疑人变量都设置为数组。每次选取一个ID与三个嫌疑人比较,若有相同则计数;若三个都不相同,则三个计数器都减一。若减为0,则从新赋值给嫌疑人。
二、源代码
// 水桶.cpp : Defines the entry point for the console application.
// #include "stdafx.h"
#include "iostream.h"
#define MAXSIZE 30 void FindWater(int ID[], int len,int water[])
{
int counter[]; //计数器
counter[]=counter[]=counter[]=;
water[]=water[]=water[]=-; //初始化嫌疑人列表
for(int i=;i<len;i++)
{
if(counter[]==) //先赋值
{
counter[]++;
water[]=ID[i];
}
else if(counter[]==)
{
counter[]++;
water[]=ID[i];
}
else if(counter[]==)
{
counter[]++;
water[]=ID[i];
}
else if(ID[i]==water[]) //如果counter为0,重新赋值
{
counter[]++;
}
else if(ID[i]==water[])
{
counter[]++;
}
else if(ID[i]==water[])
{
counter[]++;
}
else //如果与三个嫌疑人的ID都不同的话,则三个计数器都自减一,直到counter为0
{
counter[]--;
counter[]--;
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<<"水桶是:";
for(i=;i<;i++)
{
cout<<WaterKing[i]<<" ";
}
cout<<endl;
return ;
}
三、实验截图

四、心得体会
一开始,我把问题细化了,以为选取的三个ID必须互不相同,把程序写的很乱,复杂度也不是O(n2),最后也没调试成功。后来我在网上搜索了一下,发现因为他们各自都发帖超过了1/4,所以禁得起抵消,所以可以没有附加的判断条件。于是我就把嵌套的ifelse都给删了,整理了一下就完成了。
算法吧,还是要从逻辑思维和数学出发才能更好地优化代码。
软件工程随堂小作业——寻找“水桶”(C++)的更多相关文章
- 软件工程随堂小作业—— 寻找“水王”(C++)
一.设计思路 (1)输入发帖ID记录表 (2)从第一个ID开始,与后续的发帖ID进行比较,若相同计数器则加一,否则减一.若计数器的数值被减为零,则重新选取当前ID开始记录比较. (3)输出结果 二.源 ...
- 软件工程随堂小作业——随机四则运算Ⅱ(C++)
一.设计思路 设计思路已给出,此处不再赘述. 二.源代码 (1)四则运算2.cpp(源文件) // 四则运算2.cpp : Defines the entry point for the consol ...
- 软件工程随堂小作业——(C++)
一.设计思路 本来我的思路是根据上楼的人数和上楼的层数来计算出平均值,但是我发现这个思路不对.于是我选择了最笨的方法,复杂度为O(n2). (1)输入坐电梯的人数和要去的楼层: (2)找到输入楼层里最 ...
- 软件工程随堂小作业——最优惠价钱(C++)
一.设计思路 前提,没有买重复书的情况是最优惠的.总共买n本书,可以分解成5k+(n-5k),k=0,1,2,...1.如果k=0,n本不重复的价钱是最优惠的:2.如果k=1,算出每一种情况的折扣并比 ...
- 软件工程随堂小作业——随机四则运算Ⅱ之算法思路(C++)
1.题目避免重复: (1)利用系统时间来产生随机数,重复率会降低. (2)建立链表,逐个判断.可读取写入文件. 2.可定制(数量/打印方式): (1)格式有默认值; (2)可以选择重新设置分几列和每行 ...
- 软件工程随堂小作业——随机四则运算(C++)
一.设计思路: 1.程序的主体部分是循环输出,次数即题目数目由用户输入: 2.三个整型变量+rand函数来实现随机数四则运算,一个变量代表加减乘除,另外两个用作运算数: 3.用户体验:题目分三列,排列 ...
- 福州大学软件工程1816 | W班 第8次作业[团队作业,随堂小测——校友录]
作业链接 团队作业,随堂小测--校友录 评分细则 本次个人项目分数由两部分组成(博客分满分40分+程序得分满分60分) 博客和程序得分表 评分统计图 千帆竞发图 总结 旅法师:实现了更新,导出,查询, ...
- [福大软工] Z班 团队作业——随堂小测(同学录) 作业成绩
团队作业--随堂小测(同学录) 作业链接 http://www.cnblogs.com/easteast/p/7763645.html 作业情况 本次作业从原先预计的3小时,有些组打了鸡血连续肝了4. ...
- 福州大学软件工程1816 | W班 作业成绩排名汇总
评分链接 第一次作业--准备篇 第二次作业--个人项目实战 第三次作业--原型设计(结对第一次) 第四次作业--团队展示(团队) 第五次作业--项目选题报告(团队) 第六次作业--结对第2次作业--W ...
随机推荐
- hdu2085
#include <stdio.h> int main(){ __int64 h[],l[]; int i,j; int n; ){ h[]=; l[]=; ;i<=n;++i){ ...
- php5.3 连接 sqlserver2005
操作系统:XP php5.3以后,已经不对sqlserver支持连接扩展了,不过微软官方还是对php5.3以后进行了扩展解决方案. 1.确认要连接sqlserver的数据库版本为2005 2.确认ph ...
- 对象之间的引用传递 之 .NET中的深拷贝和浅拷贝
1.场景 首先,场景是这样的. 有一个Person类,类中有一个类型是Car的属性.用于表述,人开的车. Car类中有一些描述诸如汽车拼盘之类的属性.基本场景就是这样. 2.浅拷贝 Person ...
- 无法运行maven项目
tomcat Server Location 选择 User Tomcat installation 设置CATALINA_HOME环境变量(tomcat start.bat启动不了)1.CATALI ...
- CSS中属性position位置详解功能讲解与实例分析
position有五个值:static.relative.absolute.fixed.inherit. static 是默认值.就是按正常的布局流从上到下从左到右布局,平常我们做网页制作时,没有指定 ...
- Java基本开发环境搭建(适合第一次使用)
Java基本开发环境搭建(适合第一次使用) 编写人:cc 阿爸 2013-10-17 一.开发工具获取 1.开发工具包JDK l 下载地址: 到ORACLE公司官方网站(http://www.ora ...
- JS中的控制函数调用:call(),apply()和bind()
所有的函数都具有call(),apply()和bind()方法.它们可以在执行方法的时候用一个值指向this,并改变面向对象的作用域. apply方法: 以下的两种表达式是等价的: func(arg1 ...
- php5.5新函数array_column
php5.5新增了一个新的数组函数,感觉挺使用的,低版本的实现按照如下实现 if(!function_exists('array_column')){ function array_column($i ...
- 从零开始之ecshop基础篇(17)
目标:基于自定义的mvc框架开发的案例(项目) 项目周期 需求分析 典型的业务逻辑: 电子商务:商城(京东),B2C,C2C(淘宝),团购,秒杀,代购 内容管理:新浪门户类,优酷视频管理, ...
- php生成随机字符串和验证码的类
网上有很多的php随机数与验证码的代码与文章,真正适用的没有几个. 索性自己搞一个吧. 开始本节的php教程 吧,以下代码的实现,主要做到可以很好区分一个get_code(),另一个create_ch ...