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

一、设计思路

本来我的思路是根据上楼的人数和上楼的层数来计算出平均值,但是我发现这个思路不对。于是我选择了最笨的方法,复杂度为O(n2)。

(1)输入坐电梯的人数和要去的楼层;

(2)找到输入楼层里最高的,这样可以减少遍历的次数;

(3)从最低楼层开始遍历,直到最高层。内部循环计算每个人所要爬楼的层数之和,并比较找出最小的。

(4)输出结果

二、源代码

 1 // 电梯.cpp : Defines the entry point for the console application.
 2 //
 3
 4 #include "stdafx.h"
 5 #include "iostream.h"
 6 #include "stdlib.h"
 7 #define MAXSIZE 15
 8
 9 void Input(int &num,int flour[])                //输入乘坐电梯的人数及楼层
10 {
11     cout<<"请输入乘坐电梯的人数(限定15人):";
12     cin>>num;
13     if(num>15)
14     {
15         cout<<"输入错误!"<<endl;
16         exit(0);
17     }
18     cout<<"请输入每个人要去的层数(最高18层):";
19     for(int i=0;i<num;i++)
20     {
21         cin>>flour[i];
22         if(flour[i]>18)
23         {
24             cout<<"输入错误!"<<endl;
25             exit(0);
26         }
27     }
28 }
29 void getSmallestFlour(int num,int flour[],int &small)    //计算出爬楼梯层数最少的楼层
30 {
31     int sum,temp=small;
32     int highest,lowest;
33     highest=lowest=flour[0];
34     for(int i=0;i<num;i++)                //找出要去的楼层中最高的楼层
35     {
36         if(flour[i]>highest)
37         {
38             highest=flour[i];
39         }
40         else                            //找出最低楼层
41         {
42             lowest=flour[i];
43         }
44     }
45     for(i=lowest;i<=highest;i++)        //从最低楼层开始遍历直到最高楼层
46     {
47         sum=0;
48         for(int j=0;j<num;j++)
49         {
50             if((flour[j]-i)<0)            //计算爬楼梯的层数之和
51             {
52                 sum=sum+i-flour[j];
53             }
54             else
55             {
56                 sum=sum+flour[j]-i;
57             }
58         }
59         cout<<"若停在"<<i<<"层,则爬楼梯的总和为"<<sum<<endl;
60         if(sum<temp)
61         {
62             small=i;            //记录和最小的楼层号
63             temp=sum;            //记录最小的和
64         }
65     }
66 }
67
68 int main(int argc, char* argv[])
69 {
70     int num,aver,flour[MAXSIZE];
71     Input(num,flour);
72     aver=0;
73     for(int i=0;i<num;i++)
74     {
75         aver+=flour[i];
76     }
77     getSmallestFlour(num,flour,aver);
78     cout<<"电梯将停在"<<aver<<"层。"<<endl;
79     return 0;
80 }

三、结果截图

四、心得体会

上课的时候老师,讲了对这个算法进行优化,终于知道数学学得好有什么优势了。本来觉得编程与数学有关,但是关系不大,现在觉得老师说的不错,算法就是数学。以后碰到这种算法优化的或是对算法要求比较高的,可以深入研究一下。

时间: 2024-12-20 01:05:28

软件工程随堂小作业——(C++)的相关文章

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

一.设计思路 (1)输入发帖ID记录表 (2)从第一个ID开始,与后续的发帖ID进行比较,若相同计数器则加一,否则减一.若计数器的数值被减为零,则重新选取当前ID开始记录比较. (3)输出结果 二.源代码 1 // shuiwang.cpp : Defines the entry point for the console application. 2 // 3 4 #include "stdafx.h" 5 #include "iostream.h" 6 #def

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

一.设计思路 设计思路已在上一篇日志中给出,此处不再赘述. 二.源代码 三.截图 四.PSP0级 记录表 项目计划总结: 周活动总结表 姓名:袁佩佩               日期: 日期       任务 听课 编写程序 阅读课本 准备考试 日总计 周日 周一 周二 周三 100 30 周四 周五 周六 周总结 时间记录表: 学生         袁佩佩                                            日期 教师        王建民          

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

一.设计思想 思路与寻找一个水王相似,这次只是计数器和嫌疑人变量都设置为数组.每次选取一个ID与三个嫌疑人比较,若有相同则计数:若三个都不相同,则三个计数器都减一.若减为0,则从新赋值给嫌疑人. 二.源代码 1 // 水桶.cpp : Defines the entry point for the console application. 2 // 3 4 #include "stdafx.h" 5 #include "iostream.h" 6 #define M

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

一.设计思路: 1.程序的主体部分是循环输出,次数即题目数目由用户输入: 2.三个整型变量+rand函数来实现随机数四则运算,一个变量代表加减乘除,另外两个用作运算数: 3.用户体验:题目分三列,排列整洁间距适中,并且不会显示除数为0的情况. 由于一个寒假没怎么接触编程,对我来说最大的困难就是不清楚rand函数的用法以及其所在的头文件.基本功能实现之后,我又调整了一下页面.添加了srand((unsigned)time(NULL));  .因为只用rand函数的话,每次运行程序计算机产生的随机数

软件工程第四次作业——团队作业

软件工程第四次作业--团队作业 本次作业采用团队作业的方式,我的队友是我的同班同学,他们分别为:(队长)亢健强,贾猛,黄明帅,黄珂锐.我们团队的总体任务是要做一个"乐谱识别与演奏"的软件,拍摄一张乐谱图片,它会使用光学识别转换成音乐. 此次团队作业中我得任务主要是做需求调研,为此我先总结了一下常用的需求调研方法的优缺点,然后结合我们团队的实际情况选出了一种最适合我们的调研方法. 调研方法 优 点 缺 点 实地观察法 调查者在实地通过观察获得直接的.真实可靠的第一手资料 有一定的偶然性,

结对作业(软件工程第四次作业)

软件工程第四次作业---代码审查 一.partner 结对伙伴:林路 代码链接:coding 二.代码审查表 功能模块名称 简单的语法分析程序 审查人 王灵杰 审查日期 2018.4.6 代码名称 简单的语法分析程序 代码作者 林路 文件结构 重要性 审查项 结论 头文件和定义文件的名称是否合理? 合理 头文件和定义文件的目录结构是否合理? 合理 版权和版本声明是否完整? 不完整 重要 头文件是否使用了 ifndef/define/endif 预处理块? 没有 头文件中是否只存放"声明"

软件工程第0次作业:如果一定要改变世界的话,为什么不用最酷的方式呢

软件工程第0次作业 = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 最近一直在复习考研,拖到现在才来完成这次的作业,作业的信息量太大,也不知道有没有理解全面,先回答必答的几个问题. 结缘计算机:你为什么选择计算机专业?你认为你的条件如何?和这些博主比呢?你热爱这一专业吗? 来集美

Django 基于session认证 小作业

基于session认证  相亲小作业 用户登录 如果男用户登录,显示女生列表 如果女用户登录,显示男生列表 """s4day74 URL Configuration The `urlpatterns` list routes URLs to views. For more information please see: https://docs.djangoproject.com/en/1.11/topics/http/urls/ Examples: Function vie

软件工程1501B1,WEB作业集

邱硕 秦嘉颖 赵明芳 张振 田英杰 孟翔宇 王思琪 关新蕊 庄曙华 程凯龙 刘哲 李雪纯 王梓优 潘达 软件工程1501B1,WEB作业集