软件工程随堂小作业——(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 ...
随机推荐
- CentOS 6.x 播放 mp3 音乐 —— 成功
参考:http://blog.chinaunix.net/uid-14735472-id-3472898.html centos 6.x 添加 rpmforge 源--- CentOS 6.x 安装 ...
- 用Zend Studio12 导入在workspace中的项目
第一步: 文件(file)->新建(NEW)->其他(other) 第二步: 在打开的对话框里选择 常规(Genneral)->项目(Project) 第三步: 在打开的对话框输入项 ...
- MariaDB的双主
MariaDB(mysql)之主主复制 一.主主复制说明 MySQL主主复制结构区别于主从复制结构.在主主复制结构中,两台服务器的任何一台上面的数据库存发生了改变都会同步到另一台服务器上, ...
- shell下添加计划性任务
*/1 * * * * /bin/sh /tmp/hello.sh ###每1分钟执行以下/tmp下的hello.sh脚本 service crond restart 重启任务计划 * 12 * ...
- 第一部分 CLR基础:第1章 CLR的执行模型
1.1将源代码编译成托管模块
- url 编码(percentcode 百分号编码)
http://www.imkevinyang.com/2009/08/%E8%AF%A6%E8%A7%A3javascript%E4%B8%AD%E7%9A%84url%E7%BC%96%E8%A7% ...
- Entity Framework中的多个库操作批量提交、事务处理
在Entity Framework 中使用SaveChanges()是很频繁的,单次修改或删除数据后调用SaveChanges()返回影响记录数. 要使用批量修改或者批量删除数据,就需要SaveCha ...
- SQL中查看数据库各表的大小
SQL中查看数据库各表的大小 编写人:CC阿爸 2014-6-17 在日常SQL数据库的操作中,如何快速的查询数据库中各表中数据的大小. 以下有两种方法供参考: 第一种: create table # ...
- Silverlight Color的颜色值
1.MainPage.xaml <UserControl xmlns:SysManage="clr-namespace:Application" x:Class=" ...
- JMeter2.13 连接 sql server
1.安装驱动 http://www.microsoft.com/zh-CN/download/details.aspx?id=11774 下载最新的即可 解压后复制势穷力竭sqljdbc.jar到 “ ...