软件工程随堂小作业——(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 ...
随机推荐
- 自动计算尺寸列表功能案例ios源码
源码HTKDynamicResizingCell,HTKDynamicResizingCell提供自动计算尺寸的TableViewCell/CollectionViewCel,只要设置了合适AutoL ...
- rsync 安装与配置
1.什么是rsync Rsync(remote synchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件.Rsync使用所谓的“Rsync算法”来使本地和远 程两个 ...
- WAMP环境下访问PHP提示下载PHP文件
原因是服务器没有加载到PHP文件 到http.conf下加载 AddType application/x-httpd-php .php AddType application/x-httpd-php ...
- 【转】IE11的变化
1.navigator.userAgent中不再包含“MSIE”关键字 2.用javascript的判断是否是IE11的方法是: var isIE11 = (sUserAgent.toLowerCas ...
- mariadb一些命令介绍及mariadb架构图和索引
mariadb> SHOW GLOBAL VARIABLES; 全局变量影响服务器的全局操作 mariadb> SHOW [SESSION] VARIABLES; 客户端变量,只对当前会话 ...
- HTML5 的新的表单属性
本章讲解涉及 <form> 和 <input> 元素的新属性. 新的 form 属性: autocomplete novalidate 新的 input 属性: autocom ...
- 写一个函数,尽可能高效的,从一个标准 url 里取出文件的扩展名
例如: http://www.sina.com.cn/abc/de/fg.php?id=1 需要取出 php 或 .php function getExt($url){ $arr=parse_url( ...
- 2016/09/21 java关键字static
1.static方法 static方法一般称作静态方法,由于静态方法不依赖于任何对象就可以进行访问,因此对于静态方法来说,是没有this的,因为它不依附于任何对象,既然都没有对象,就谈不上th ...
- 在EF的code frist下写稳健的权限管理系统:仓储设计(三)
public class BaseRepository<T>:IBaseRepository<T> where T : class { protected EfConnecti ...
- 学一点Git--20分钟git快速上手 [Neil]
From: http://www.cnblogs.com/shuidao/p/3535299.html (图片已修复)在Git如日中天的今天,不懂git都不好意思跟人说自己是程序猿.你是不是早就跃跃欲 ...