软件工程随堂小作业——(C++)
一、设计思路
本来我的思路是根据上楼的人数和上楼的层数来计算出平均值,但是我发现这个思路不对。于是我选择了最笨的方法,复杂度为O(n2)。
(1)输入坐电梯的人数和要去的楼层;
(2)找到输入楼层里最高的,这样可以减少遍历的次数;
(3)从最低楼层开始遍历,直到最高层。内部循环计算每个人所要爬楼的层数之和,并比较找出最小的。
(4)输出结果
二、源代码
// 电梯.cpp : Defines the entry point for the console application.
// #include "stdafx.h"
#include "iostream.h"
#include "stdlib.h"
#define MAXSIZE 15 void Input(int &num,int flour[]) //输入乘坐电梯的人数及楼层
{
cout<<"请输入乘坐电梯的人数(限定15人):";
cin>>num;
if(num>)
{
cout<<"输入错误!"<<endl;
exit();
}
cout<<"请输入每个人要去的层数(最高18层):";
for(int i=;i<num;i++)
{
cin>>flour[i];
if(flour[i]>)
{
cout<<"输入错误!"<<endl;
exit();
}
}
}
void getSmallestFlour(int num,int flour[],int &small) //计算出爬楼梯层数最少的楼层
{
int sum,temp=small;
int highest,lowest;
highest=lowest=flour[];
for(int i=;i<num;i++) //找出要去的楼层中最高的楼层
{
if(flour[i]>highest)
{
highest=flour[i];
}
else //找出最低楼层
{
lowest=flour[i];
}
}
for(i=lowest;i<=highest;i++) //从最低楼层开始遍历直到最高楼层
{
sum=;
for(int j=;j<num;j++)
{
if((flour[j]-i)<) //计算爬楼梯的层数之和
{
sum=sum+i-flour[j];
}
else
{
sum=sum+flour[j]-i;
}
}
cout<<"若停在"<<i<<"层,则爬楼梯的总和为"<<sum<<endl;
if(sum<temp)
{
small=i; //记录和最小的楼层号
temp=sum; //记录最小的和
}
}
} int main(int argc, char* argv[])
{
int num,aver,flour[MAXSIZE];
Input(num,flour);
aver=;
for(int i=;i<num;i++)
{
aver+=flour[i];
}
getSmallestFlour(num,flour,aver);
cout<<"电梯将停在"<<aver<<"层。"<<endl;
return ;
}
三、结果截图

四、心得体会
上课的时候老师,讲了对这个算法进行优化,终于知道数学学得好有什么优势了。本来觉得编程与数学有关,但是关系不大,现在觉得老师说的不错,算法就是数学。以后碰到这种算法优化的或是对算法要求比较高的,可以深入研究一下。
软件工程随堂小作业——(C++)的更多相关文章
- 软件工程随堂小作业——随机四则运算Ⅱ(C++)
一.设计思路 设计思路已给出,此处不再赘述. 二.源代码 (1)四则运算2.cpp(源文件) // 四则运算2.cpp : Defines the entry point for the consol ...
- 软件工程随堂小作业——寻找“水桶”(C++)
一.设计思想 思路与寻找一个水王相似,这次只是计数器和嫌疑人变量都设置为数组.每次选取一个ID与三个嫌疑人比较,若有相同则计数:若三个都不相同,则三个计数器都减一.若减为0,则从新赋值给嫌疑人. 二. ...
- 软件工程随堂小作业—— 寻找“水王”(C++)
一.设计思路 (1)输入发帖ID记录表 (2)从第一个ID开始,与后续的发帖ID进行比较,若相同计数器则加一,否则减一.若计数器的数值被减为零,则重新选取当前ID开始记录比较. (3)输出结果 二.源 ...
- 软件工程随堂小作业——最优惠价钱(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 ...
随机推荐
- JSF 监听
JSF项目中实现基于RBAC模型的权限管理设计(二) 转 4.3 权限验证模块设计 一个好的权限管理机制在项目中应用时,最好不要让程序员在具体业务代码的方法中来判断用户权限.因为这意味着大量重复的代码 ...
- Android IOS WebRTC 音视频开发总结(五十)-- 技术服务如何定价?
这篇文章最早是杜老师写的,看完感触很深,加上之前跟咨询公司的朋友也讨论过这方面的问题,所以结合自己的经验,做了些删改(得到了杜老师的授权). 先通过下面几个简单的问题来了解技术服务: 问题1:技术服务 ...
- 三、第一个Struts2应用案例(编码步骤)
第一个Struts2应用案例(编码步骤) 编写2个jsp hello.jsp <body> <a href="${pageContext.request.conte ...
- Linux命令行 3大技巧归纳
在软件开发的世界中,作为web端程序猿打交道最多的操作系统相信就是Linux系统了吧.而对于Linux系统的使用,如果能掌握一些小技巧,在程序开发.调试的过程中,相信做事的效率也会有一些提升.下面就和 ...
- nginx安装详解
一.环境: 1.Linux:centos6.4(32位) 2.Gcc的编译环境.使用make命令编辑. yum install gcc-c++ 3.PCRE PCRE(Perl Compatible ...
- 建立交叉编译环境(arm-linux-gcc)
linux系统内核版本:2.6.32-358.el6.x86_64(在64位系统上安装32位程序需要另外安装一些库) arm-linux-gcc版本:本文安装的是友善之臂tiny6410光盘中自带的a ...
- 软件工程 speedsnail 第二次冲刺7
20150524 完成任务:蜗牛碰到线后速度方向的调整: 遇到问题: 问题1 方向用到abs等函数,不熟悉 解决1 查看文档 明日任务: 蜗牛碰到线后速度方向的调整:(做优化)
- LotusPhp中配置文件组件LtConfig详解
LotusPhp中配置文件组件LtConfig是约定的一个重要组成部分,适用于多个场景,多数的LotusPhp组件如数据库,缓存,RBAC,表单验证等都需要用到配置组件,LtConfig配置组件也是L ...
- C++列出完数
题目内容:自然数中,完数寥若晨星,请在从1到某个整数范围中打印出所有的完数来.所谓“完数”是指一个数恰好等于它的所有不同因子之和.例如,6是完数,因为6=1+2+3.而24不是完数,因为24≠1+2+ ...
- CentOS7.0安装与配置Tomcat-7
解决权限不够 #chmod a+x filename 安装说明 安装环境:CentOS-7.0.1406安装方式:源码安装 软件:apache-tomcat-7.0.29.tar.gz 下载地址:ht ...