当前位置: 首页 > news >正文

【华为机试】2023年真题B卷(python)-乘坐保密电梯

一、题目

题目描述:

有一座保密大楼,你从0楼到达指定楼层m,必须这样的规则乘坐电梯:给定一个数字序列,每次根据序列中的数字n上升n层或者下降n层,前后两次操作的方向必须相反,规定首次的方向向上,自行组织序列的顺序按规定操作到达指定楼层。求解到达楼层的序列组合,如果不能到达楼层,给出小于该楼层的最近序列组合。
说明: 操作电梯时不限定楼层范围 必须对序列中的每个项进行操作,不能只使用一部分。

二、输入输出

输入描述: 
第一行: 期望的楼层,取值范围[1,50]; 序列总个数,取值范围[1,23]
第二行: 序列,每个值取值范围[1,50]
输出描述 
能够达到楼层或者小于该楼层最近的序列补充说明: 操作电梯时不限定楼层范围 必须对序列中的每个项进行操作,不能只使用一部分 

三、示例

示例1

输入:

5

3 1 2 6

输出:

6 2 1

说明: 1 2 6
6 2 1均为可行解,按先处理大值的原则结果为6 2 1

四、要求

时间限制:C/C++ 1秒,其他语言 2秒
空间限制:C/C++262144K,其他语言524288K

五、参考代码 

# -*- coding: utf-8 -*-params = [int(x) for x in input().split(" ")]
target = params[0]
count = params[1]
nums =  [int(x) for x in input().split(" ")]
#求和
sum_val = 0
min_distance = float("inf")
floor_list = []
for i in range(count):floor_list.append(nums[i])sum_val += nums[i]def solve(target, sum_val, floor_list,min_distance, n, new_list, index,downs, flag):if(flag):returnif(n != 0):for i in range(index, len(floor_list)):new_list.append(floor_list[i])solve(target,sum_val, floor_list,min_distance, n-1, new_list, i+1,downs,flag)new_list.pop(len(new_list) - 1)  else :cnt1 = 0for i in range(len(new_list)):cnt1 += new_list[i]distance = abs(sum_val - 2 * cnt1 - target)if(distance == 0):downs = new_listflag = trueelif(min_distance > distance):min_distance = distancedowns = new_list#找出下降层数
downs = []
flag = False
solve(target, sum_val, floor_list,min_distance, count/2, [], 0,downs,flag)for  down in downs :if(floor_list.index(down) != -1):floor_list.pop(floor_list.index(down))floor_list.sort(reverse=True)
downs.sort(reverse=True)result_str = ""
#上升和下降交替存在
for  i in range(len(floor_list)):result_str += str(floor_list[i]) + " "if(i < len(downs) ):result_str += str(downs[i]) + " "print(result_str)

相关文章:

  • 持续集成交付CICD:HELM 自动化完成前端项目应用发布与回滚
  • HBase基础知识(二):HBase集群部署、HBaseShell操作
  • Linux的/proc/self/学习
  • Starting the Docker Engine...一直转圈
  • 中国人民大学金融加拿大女王大学硕士项目——你愿意花一年时间完成蜕变吗
  • SAP系统标准表之间的关联关系对应
  • 职场遇到瓶颈如何破解?不妨看看中国人民大学金融加拿大女王大学硕士项目
  • 微信商家0.2费率如何申请
  • 服务器量化训练操作说明
  • 虾皮广告怎么做:如何在虾皮平台上进行广告投放
  • 【玩转TableAgent数据智能分析】借助全球高校数据多维度分析案例,体验TableAgent如何助力用户轻松洞察数据,赋能企业高效数智化转型
  • 【C语言】动态内存管理基础知识——动态通讯录,如何实现通讯录容量的动态化
  • 数据分析基础之《numpy(4)—ndarry运算》
  • 第四十一章 XML 映射参数摘要
  • opencv静态链接error LNK2019
  • php的引用
  • Angular 2 DI - IoC DI - 1
  • CSS选择器——伪元素选择器之处理父元素高度及外边距溢出
  • CSS中外联样式表代表的含义
  • Protobuf3语言指南
  • TiDB 源码阅读系列文章(十)Chunk 和执行框架简介
  • unity如何实现一个固定宽度的orthagraphic相机
  • vue:响应原理
  • Webpack 4 学习01(基础配置)
  • 翻译:Hystrix - How To Use
  • 分布式任务队列Celery
  • 复杂数据处理
  • 解决jsp引用其他项目时出现的 cannot be resolved to a type错误
  • 你对linux中grep命令知道多少?
  • HanLP分词命名实体提取详解
  • #我与Java虚拟机的故事#连载06:收获颇多的经典之作
  • #在 README.md 中生成项目目录结构
  • (3)(3.5) 遥测无线电区域条例
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (Oracle)SQL优化技巧(一):分页查询
  • (带教程)商业版SEO关键词按天计费系统:关键词排名优化、代理服务、手机自适应及搭建教程
  • (二)斐波那契Fabonacci函数
  • .NET 6 在已知拓扑路径的情况下使用 Dijkstra,A*算法搜索最短路径
  • .NET 8.0 发布到 IIS
  • .net core 依赖注入的基本用发
  • .NET 应用架构指导 V2 学习笔记(一) 软件架构的关键原则
  • .NET 中选择合适的文件打开模式(CreateNew, Create, Open, OpenOrCreate, Truncate, Append)
  • .net操作Excel出错解决
  • [2010-8-30]
  • [8481302]博弈论 斯坦福game theory stanford week 1
  • [AutoSar]状态管理(五)Dcm与BswM、EcuM的复位实现
  • [BZOJ1008][HNOI2008]越狱
  • [Enterprise Library]调用Enterprise Library时出现的错误事件之关闭办法
  • [GN] DP学习笔记板子
  • [IE编程] IE 是如何决定Accept-Language 属性的
  • [Linux](16)网络编程:网络概述,网络基本原理,套接字,UDP,TCP,并发服务器编程,守护(精灵)进程
  • [Linux]history 显示命令执行的时间
  • [Mvc]在ASP.NET MVC中使用Repeater
  • [node] Node.js的文件系统