寒假作业2 电梯问题

电梯升降

github: https://github.com/Seast90/Elevator

方案 代码行数 bug数
A 预计200+ 预计20+个
B 120 20个

优化过程

 模拟现实的电梯写的代码。
  本来想写A方案的贪心思路,就是仅靠当前数据进行权值计算来判断电梯接下来应该如何运作,但是由于思路不完整并且觉得仅仅凭借权值判断会出现有些情况无法最优的情形,所以思路A只写了一个模板,然后去写了思路B的代码,就是在当前时间暴力dfs每种电梯可行的情况中最优的情况,用字符串存储电梯的运作,然后读取最优运作的字符串进行电梯的调度。
  优化主要在dfs的思路上的优化和代码的debug,运行过程中我发现我的dfs有部分可以剪枝,所以对代码进行了大刀阔斧的整改,在出的几个测试数据都没有bug的情况下我提交了代码。
  对于贪心的权值判断我有个大概的框架,但是并不能保证所有情况下都能最优,所以还没决定要如何写贪心策略的代码。

测试数据

在一层楼 停下多次 载客:

来回载客的复杂情况:

选取最优策略的判断:

复杂情况选取策略:

电梯中途掉头的情况:

电梯不掉头等待乘客的情况:

总体来说满足我的预期并且在图二情况中跑赢了stolf犇犇的贪心电梯,也从侧面证实了我对贪心策略无法做到百分百最优策略的判断(但是其他五种情况都一样 stolf犇犇太强了%%%)

收获

一开始以为这题并不难 所以水了几天只思考没实践,后来开始实践的时候才发现自己考虑的还是太少了,还是有些部分没有考虑清楚,

其中包括对贪心策略的判断,一开始觉得这个策略不会很难想,后来发现很难将这个策略做到极致,总会有些小情况是没办法完美解决的,

所以改写了暴力的代码,并且发现暴力的代码也是一样的不好写= =。debug了几个小时的终于把问题解决清楚,总的来说对于B代码还是比较满意的,

但是对于A代码没写出来还是有些不满意,同时也得多留心生活中的一些小事情,说不定之后就会遇到同样的代码题(

Pintia 编程题

原文地址:https://www.cnblogs.com/seast90/p/8443103.html

时间: 2024-08-30 11:11:33

寒假作业2 电梯问题的相关文章

寒假作业2_电梯

目前想法: 2月9日更新 暴力回溯搜索嵌套,遍历所有载客顺序 载客方案 记录最优解 把5个输入数据看成5名乘客,用回溯生成5名乘客的接客顺序 然后按照生成的顺序去载客,载客后有两种选择,一是去下个预订地方进行载客,二是送当前电梯里的一名客 送完客有两种选择,一是如果电梯内还有客人送一名客人,二是去下个地方载客 写了好久,现在在送客的子函数出了bug 后面再写 原文地址:https://www.cnblogs.com/fzu-031702148/p/8437474.html

2017级面向对象程序设计寒假作业2

Deadline:2018.02.11 22:00 pm 第一次的寒假作业,开启了大家的寒假生活,转眼回到了"小学生作文题"的感觉.不知道是否也通过这次作业,将你的回忆时光拉回到了几年前或十年前,沉思回忆代替了纷扰的知识.很多同学回忆了小学.中学的课任老师,或书法.绘画的老师.无论他们是严厉还是宽容,是鸡汤还是淡定,都或多或少的影响或潜移默化改变着你.在经过一次时光超越后,书归正传,我们开启编码的作业. 一.Pintia小作业 注册pintia,填写昵称为"fzu+学号&qu

2017面向对象程序设计寒假作业3!

实现简单电梯调度(2) GitHub:pullself 承接上文:2017面向对象程序设计寒假作业2! 上文调度方式的更新与优化 由于现在电梯可以在任意楼层停靠并且上下人.进行对应的修改. 建立在上文所使用的调度方式为基础,继续给出以预知和非预知为条件的两个程序. 代码行数 调试bug 编码时间 ?行 ?个 ?h ?行 ?个 ?h 预知版本 通过分析,我们可以知道,只需要对搜索方式进行修改即可,修改为通过接受到的请求,动态增加所需要搜索节点. 具体实现方式: 在搜索过程中加入目的地判断与记录.

2017级面向对象程序设计寒假作业4

Deadline 2018.03.02 22:00 一.完成PTA题目集 题目集链接:https://pintia.cn/problem-sets/966322407656148992/problems 请独立完成,不要抄袭!助教会对提交的代码进行查重,若发现抄袭则倒扣分. 完成题目后请将提交结果的截图贴到下述博客的末尾. 二.自我总结博客 写一篇博客,作为在寒假中关于 C++ 已完成的自学内容的总结.博客中需要包括但不限于以下内容: 已学的内容总结 存疑的问题 花费的总时间 锻炼的代码行数 两

寒假作业4

做第四题的时候,我先学了C++的字符串相关内容才开始写,很难过的是来不及了,提交的时候不知道为什么编译错误,错误还在寻找. 啊我找出错误了,被自己蠢哭QAQ 在做这次寒假作业的过程中,发现我上个学期C语言的知识真的很不扎实啊,指针和结构体部分的内容还有些乱乱的,我会尽快理清. 这个寒假入门了C++,发现C++和C还是有不少共通之处的,C++较之C功能更多,写法更简便些. 然后初步了解了算法,感觉挺有意思的,接下来想多学学算法的内容. 电梯作业一开始看到题目真的很懵,不知道要怎么写.中间想过不少想

洛谷 P2717 寒假作业

题目背景 zzs和zzy正在被寒假作业折磨,然而他们有答案可以抄啊. 题目描述 他们共有n项寒假作业.zzy给每项寒假作业都定义了一个疲劳值Ai,表示抄这个作业所要花的精力.zzs现在想要知道,有多少组连续的寒假作业的疲劳值的平均值不小于k? 简单地说,给定n个正整数A1,A2,A3,...,An,求出有多少个连续的子序列的平均值不小于k. 输入输出格式 输入格式: 第一行两个正整数,n和k. 第二行到第n+1行,每行一个正整数Ai. 输出格式: 一个非负整数. 输入输出样例 输入样例#1: 3

2016蓝桥杯省赛C/C++A组第六题 寒假作业

题意:现在小学的数学题目也不是那么好玩的. 看看这个寒假作业: □ + □ = □ □ - □ = □ □ × □ = □ □ ÷ □ = □ 每个方块代表1~13中的某一个数字,但不能重复. 比如: 6 + 7 = 13 9 - 8 = 1 3 * 4 = 12 10 / 2 = 5 以及: 7 + 6 = 13 9 - 8 = 1 3 * 4 = 12 10 / 2 = 5 就算两种解法.(加法,乘法交换律后算不同的方案) 你一共找到了多少种方案? 分析:回溯即可,但是如果等到cur==12

洛谷P2717 寒假作业

题目:https://www.luogu.org/problemnew/show/2717 题目背景 zzs和zzy正在被寒假作业折磨,然而他们有答案可以抄啊. 题目描述 他们共有n项寒假作业.zzy给每项寒假作业都定义了一个疲劳值Ai,表示抄这个作业所要花的精力.zzs现在想要知道,有多少组连续的寒假作业的疲劳值的平均值不小于k? 简单地说,给定n个正整数A1,A2,A3,...,An,求出有多少个连续的子序列的平均值不小于k. 输入输出格式 输入格式: 第一行两个正整数,n和k. 第二行到第

寒假作业2

寒假作业2 GitHub仓库地址:Destr 慕课在线学习 课程 我选择的是西安交通大学计算机程序设计(C++),授课老师赵英良. 原因 这门课程从C++基础开始讲起,较好的完成了从C到C++的过度,而且西安交大也是一所知名的高校,可以使我较好的在寒假期间完成C++的学习 课程目录 第1周 程序设计与C++概述 第2周 简单信息的表示和基本运算 第3周 运算的流程控制 第4周 复杂信息的表达与处理 第5周 问题的模块化求解 第6周 问题的模块化求解(2)--特殊函数 第7周 按址操作(1)--指