华为OD机试真题C卷-篇4

200分值题

  • 员工派遣
  • 快递员的烦恼
  • 符号运算
  • 伐木工
  • 反射计数
  • 分披萨
  • 推荐多样性
  • 贪心的歌手
  • 螺旋数组矩阵(100)

员工派遣

在这里插入图片描述
在这里插入图片描述

 nums = [int(x) for x in input().split(" ")]
x = nums[0]
y = nums[1]
count_x = nums[2]
count_y = nums[3]
left = 1
right = pow(10, 9)
while (True) :if(left >= right):breakelse :mid = (left + right) >> 1target = max(0, count_x - int(mid / y) + int(mid / (x * y))) + max(0, count_y - int(mid / x) + int(mid / (x * y)))if (mid - int(mid / x) - int(mid / y) + int(mid / (x * y)) >= target) :right = midelse :left = mid + 1
print(left)

 

快递员的烦恼

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

 nums = [int(x) for x in input().split(" ")]
n = nums[0]
r = nums[1]
matrix = [[float('inf') for i in range(n + 1)] for j in range(n + 1)]
distiance_map = [0 for i in range(2000)]
for i in range(n):nums1 = [int(x) for x in input().split(" ")]distiance_map[nums1[0]] = i + 1matrix[0][i + 1] = nums1[1]matrix[i + 1][0] = nums1[1]for i in range(r):nums1 = [int(x) for x in input().split(" ")]matrix[distiance_map[nums1[0]]][distiance_map[nums1[1]]] = nums1[2]matrix[distiance_map[nums1[1]]][distiance_map[nums1[0]]] = nums1[2]#保存客户访问状态,因为有n个客户,所以最多有2的10次方个状态。
cache = [[float('inf') for i in range(n + 1)] for j in range(1024)]#当前访问的客户状态以及距离
queue = []
queue.append([0, 0])
cache[0][0] = 0
while (True):if(len(queue)<=0):breakelse :position = queue.pop(0)print(position[0]);i=0while(True):if(i>n):breakelse :if(i==position[1] or matrix[position[1]][i] ==float('inf')):i+=1continuenew_situation = position[0]if(i > 0):new_situation =  position[0] | pow(2, i-1)if (cache[new_situation][i] > cache[position[0]][position[1]] + matrix[position[1]][i]) :cache[new_situation][i] = cache[position[0]][position[1]] + matrix[position[1]][i]queue.append([new_situation, i])i+=1final_distiance = cache[pow(2, n) - 1][0]
if(final_distiance == float('inf')):print(-1)
else :print(final_distiance)

 

符号运算

在这里插入图片描述
在这里插入图片描述


nums = []
operations = []#最大公约数
def gcd(a, b) :if(a % b == 0):return b else:return gcd(b, a%b)def eval_op ():global nums,operationsnums1 = nums.pop()nums2 = nums.pop()x = operations.pop()result = [0,0]if(x == '*' or x == '+' or x == '-') :result[0] = nums2[0] * nums1[0]else :result[0] = nums2[0] * nums1[1]sum_a = nums2[1] * nums1[0]sum_b = nums1[1] * nums2[0]if(x == '*'):result[1] = nums2[1] * nums1[1]elif (x == '+'):result[1] = sum_a + sum_belif (x == '-') :result[1] = sum_a - sum_belse :result[1] = nums2[1] * nums1[0]nums.append(result)def get_priority(input_char):if(input_char == '+' or input_char == '-') :return 0else :return 1input_str = input()
nums = []
operations = []
length = len(input_str)
current = ""
i = 0
while (i < length) :if (input_str[i].isdigit()) :while (True) :if(not input_str[i].isdigit()):breakcurrent += input_str[i]if (i + 1 >= length) :breaki+=1nums.append([1, int(current)])current = ""elif (input_str[i] == '(') :operations.append(input_str[i])elif (input_str[i] == ')') :while (operations[0] != '(') :eval_op()operations.pop(0)elif(input_str[i] == ' '):i+=1continueelse :while (len(operations)>0 and operations[0] != '('and get_priority(input_str[i]) <= get_priority(operations[0])) :eval_op()operations.append(input_str[i])i+=1while (True) :if(len(nums) <= 1):breakelse :eval_op()result = nums[0]
if (result[0] == 0) :print("ERROR")
else :up = gcd(result[0], result[1])result[0] /= upresult[1] /= upoutput_str = ""if(result[0] * result[1] < 0):output_str += "-"if (abs(result[0]) == 1) :print(output_str+str(result[1]))else :print(output_str + str(abs(int(result[1]))) + "/" +str(abs(int(result[0]))))

 

伐木工

在这里插入图片描述

import functools
import sys
import copy
import re
import mathn =int(input())
cache = [0 for i in range(n+1)]
cache[0] = 0
memory = [[] for i in range(n+1) ]for i in range(1,n+1):memory[i].append(i)cache[i] = ii=1
while(True):if(i>n):breakelse :for j in range(1, i):if(cache[i] > cache[j] * cache[i - j]):continueelif(cache[i] < cache[j] * cache[i - j]):cache[i] = cache[j] * cache[i - j]memory[i] = []for k in range(len(memory[j])):memory[i].append(memory[j][k])for k in range(len(memory[i-j])):memory[i].append(memory[i-j][k])else :if(len(memory[i]) > len(memory[j]) + len(memory[i-j])):memory[i] = []for k in range(len(memory[j])):memory[i].append(memory[j][k])for k in range(len(memory[i-j])):memory[i].append(memory[i-j][k])i+=1result = memory[n]
result.sort()
output_str = ""
for j in range(len(result)):output_str += str(result[j]) + " "
print(output_str)

 

反射计数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


import mathnums = [int(x) for x in input().split(" ")]
w = nums[0]
h = nums[1]
x = nums[2]
y = nums[3]
sx = nums[4]
sy = nums[5]
t = nums[6]
matrix = [[0 for i in range(w)] for j in range(h)]
for i in range(h):inupt_str = input()for j in range(w):matrix[i][j] = ord(inupt_str[j]) - ord('0')result = 0
while (True):if(t<0):breakelse :if ((x + sx < 0) or (x + sx > w - 1)) :sx = -sxelif ((y + sy < 0) or (y + sy > h - 1)) :sy = -syif (matrix[y][x] == 1) :result+=1x += sxy += syt-=1
print(result)

 

分披萨

在这里插入图片描述
在这里插入图片描述

 
n =int(input())
nums = []
for i in range(n):nums.append(int(input()))
memory = [[0 for i in range(n)] for j in range(n)]def backtrace(left, right) :global n,nums,memoryif(nums[left] > nums[right]):left = (left + n + 1) % nelif(nums[left] < nums[right]):right = (right + n - 1) % nif (memory[left][right] <= 0) :if (left == right) :memory[left][right] = nums[left]else :new_left = (left + 1) % nnew_right = (right + n - 1) % nmemory[left][right] = nums[left] + backtrace(new_left, right)if(nums[right] + backtrace(left,new_right) > memory[left][right]):memory[left][right] = nums[right] + backtrace(left,new_right)return memory[left][right]else :return memory[left][right]result = 0
i=0
while(True):if(i>=n):breakelse :left = (i + n + 1) % nright = (i + n - 1) % ntarget = backtrace(left, right)if(target+nums[i] > result):result = target+nums[i]i+=1
print(result) 

 

推荐多样性

在这里插入图片描述
在这里插入图片描述

 
n =int(input())
m = int(input())
input_matrix = []
while(True):try:input_matrix.append([int(x) for x in input().split(" ")])except:break
output_length = [0 for x in range(len(input_matrix))]
nums = []
while (True) :if(len(nums) >= n * m):breakelse :for i in range(len(input_matrix)):index = len(input_matrix[i])if(len(input_matrix[i]) > output_length[i] + 4):index = output_length[i] + 4j = output_length[i]while(j<index):nums.append(input_matrix[i][j])j+=1output_length[i] = index
output_str = ""
for j in range(n):for i in range(m):output_str += str(nums[i * n + j]) + " "
print(output_str[:-1]) 

 

贪心的歌手

在这里插入图片描述
在这里插入图片描述

 
params = [int(x) for x in input().split(" ")]
T = params[0]  
N = params[1]  
nums =  [int(x) for x in input().split(" ")]
matrix = []  
for i in range(N):matrix.append([int(x) for x in input().split(" ")])for i in range(len(nums)):T-=nums[i]moneys = []
i=0
while(True):if(i>=N):breakelse:temp1 = matrix[i][0]temp2 = matrix[i][1]j=0while(True):if(j>=T or temp1<=0):breakelse:moneys.append(temp1)temp1 = temp1- temp2i+=1moneys = sorted(moneys, key=lambda x:-x)result = 0
k = 0
while(True):if(k>=T):breakelse:result += moneys[k]k+=1
print(result)

 

螺旋数组矩阵(100)

在这里插入图片描述
在这里插入图片描述

 
directions = [0, 1, 0, -1, 0]
params = [int(x) for x in input().split(" ")]
k = params[0]  
n = params[1]  matrix = [["*" for i in range(int((k - 1) / n + 1)) ] for j in range(n)]
start_x = 0
start_y = 0
count = 1 
index = 0 while (True):if(count > k):breakelse :matrix[start_x][start_y] = str(count)count+=1new_x = start_x + directions[index]new_y = start_y + directions[index+1]if (new_x < 0 or new_x >= n or new_y < 0 or new_y >= (k - 1) / n +1 or matrix[new_x][new_y]!="*") :index = (index + 1) % 4start_x = start_x + directions[index]start_y = start_y + directions[index+1]else :start_x= new_xstart_y= new_yfor i in range(n):output_str = ""for j in range(int((k - 1) / n + 1)):output_str += matrix[i][j]if (j != (k - 1) / n):output_str += " "print(output_str)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/693833.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue 实现docx文件在线预览

预览请求步骤&#xff1a; 准备一个需要预览的文件地址【如:https://usdoc.cn/vw/文件模板.docx】GET 参数到请求地址将拼接好的地址放在浏览器中&#xff0c;开始预览 请求地址&#xff1a;https://vw.usdoc.cn/ 请求方式&#xff1a;GET 请求参数: 字段名称字段类型必填参数…

2024年单服务器部署Mongodb三节点副本集自动化部署脚本

该脚本是为了方便自己学习和工作中部署服务器从而节省时间进行编写&#xff0c;目前能正常部署&#xff0c;创建集群&#xff0c;管理员用户&#xff0c;以及连接都没问题&#xff0c;但是没有开启验证&#xff0c;后续找时间补充。 完整的教程请参考一下我写的技术文章。 20…

渲染效果图有哪几种分类?效果图为什么用云渲染更快

云渲染利用了集群化的云端服务器资源&#xff0c;通过并行计算充分发挥了高性能硬件的优势&#xff0c;显著提升了渲染的速度。这一技术特别适用于处理规模庞大或细节丰富的渲染任务&#xff0c;在缩短项目完成时间方面表现卓越。无论是用于为建筑提供精确的可视化效果图&#…

【Python Scrapy】分布式爬虫利器

在当今信息爆炸的时代&#xff0c;获取大规模数据对于许多应用至关重要。而分布式爬虫作为一种强大的工具&#xff0c;在处理大量数据采集和高效爬取方面展现了卓越的能力。 本文将深入探讨分布式爬虫的实际应用场景&#xff0c;通过代码示例演示其在提升爬取效率、保障系统稳定…

牛刀小试 - C++ 学生信息管理系统

参考文档&#xff1a; C实现&#xff1a;学生管理系统&#xff08;详细解析&#xff09; 关于switch中的default里面的break是否可以省略这件事 需求要求&#xff1a; &#xff08;1&#xff09;增加记录 &#xff08;2&#xff09;查找记录 &#xff08;3&#xff09;删除…

FFmpeg进阶-给视频添加马赛克效果

很多时候为了隐藏视频中的敏感信息如人脸、身份证号、车牌号等,我们会采用马赛克算法对视频帧中的一部分内容进行处理。这里介绍一下如何采用FFmpeg实现马赛克效果。 马赛克效果算法的原理如下: 1.分块处理:首先将图像划分为多个小块或区域 2.像素替换:对于每个小块,算法会将…

【Windows11】内存使用率只有总内存容量的一半

硬件配置&#xff1a;2根16G的内存条&#xff08;金百达DDR4 3600, 海力士颗粒&#xff0c;灯条刃&#xff09;&#xff0c;插在2和4通道上 系统配置&#xff1a;windows11 问题描述&#xff0c;我和这位网友的问题一模一样&#xff1a; 系统32G内存&#xff0c;开机完全识别&…

实习日志17

1.测试公司服务器 1.1.太卡了&#xff0c;点一下卡半天 上传项目源码和文件&#xff1a; 将活字格项目源码和所有相关文件上传到服务器的指定目录。可以使用向日葵远程控制或者版本控制系统来进行文件上传。 重新配置活字格项目&#xff1a; 根据服务器环境&#xff0c;需要对…

Java 学习和实践笔记(14):用表格来理解类、对象、属性以及动作(方法)很容易

OOP :面向对象编程&#xff0c;object oriented programming. 用表格就可以很好地理解类、对象、属性、以及动作这些概念。 一个表&#xff08;结构&#xff09;就对应一个类&#xff08;结构&#xff09;。所以凡叫什么类&#xff0c;自己就在心里把它叫什么表。反过来&…

vue 非父子通信-event bus 事件总线

1.作用 非父子组件之间&#xff0c;进行简易消息传递。(复杂场景→ Vuex) 2.步骤 创建一个都能访问的事件总线 &#xff08;空Vue实例&#xff09; import Vue from vue const Bus new Vue() export default Bus A组件&#xff08;接受方&#xff09;&#xff0c;监听Bus的…

【图与网络数学模型】3.Ford-Fulkerson算法求解网络最大流问题

【图与网络数学模型】3.Ford-Fulkerson算法求解网络最大流问题 一、网络流模型1. 概述2. 可行流3. 增广链 二、示例1. 最大流问题2. Alternate Formulation&#xff1a;最小截量问题 三、Ford-Fulkerson 算法1. 导入库2. 初始化残差图3. 定义查找增广路径4. 定义循环5. 程序运行…

ubuntu22.04@Jetson Orin Nano之OpenCV安装

ubuntu22.04Jetson Orin Nano之OpenCV安装 1. 源由2. 分析3. 证实3.1 jtop安装3.2 jtop指令3.3 GPU支持情况 4. 安装OpenCV4.1 修改内容4.2 Python2环境【不需要】4.3 ubuntu22.04环境4.4 国内/本地环境问题4.5 cudnn版本问题 5. 总结6. 参考资料 1. 源由 昨天用Jetson跑demo程…

《英伟达-本地AI》--NVIDIA Chat with RTX-本机部署

阿丹&#xff1a; 突然发现公司给配置的电脑是NVIDIA RTX 4060的显卡&#xff0c;这不搞一搞本地部署的大模型玩一玩&#xff1f;&#xff1f;&#xff1f; 从0-》1记录一下本地部署的全过程。 本地模型下载地址&#xff1a; Build a Custom LLM with Chat With RTX | NVIDIA…

虚拟机安装Centos7迷你版

虚拟机安装Centos7迷你版 迷你版较常规版精简了很多功能&#xff0c;所以体积也小了很多&#xff0c;喜欢自定义安装的可以选择迷你版 参考文章&#xff1a; VirtualBox虚拟机安装Centos7详细教程图解 网卡配置参考文章 下载Centos迷你版镜像 安装镜像 下载镜像 阿里云Cen…

理论学习-ARM-内核

ARM内核 函数的调用加载、存储计算中断异常线程的切换 为了提高学习效率&#xff0c;我们要提前想好学习策略。 首先&#xff0c;使用频率越高的知识点&#xff0c;越要首先学习。假使&#xff0c;我们学习了一个知识点&#xff0c;能覆盖工作中80%的工作量&#xff0c;那是不是…

机器学习基础(四)非监督学习的进阶探索

导语&#xff1a;上一节我们详细探索监督学习的进阶应用&#xff0c;详情可见&#xff1a; 机器学习基础&#xff08;三&#xff09;监督学习的进阶探索-CSDN博客文章浏览阅读296次&#xff0c;点赞13次&#xff0c;收藏11次。监督学习作为机器学习的一个主要分支&#xff0c;…

【C++】vector模拟实现+迭代器失效

vector模拟实现 成员变量定义默认成员函数构造函数 迭代器范围for、对象类型匹配原则 容量操作sizeemptycapacityreserve成员变量未更新memcpy值拷贝 resize内置类型的构造函数 数据访问frontbackoperator[ ] 数据修改操作push_backpop_backswapclearinsertpos位置未更新无返回…

【Linux】Linux调试器-gdb使用

1. 背景 程序的发布方式有两种&#xff0c;debug模式和release模式 Linux gcc/g出来的二进制程序&#xff0c;默认是release模式 要使用gdb调试&#xff0c;必须在源代码生成二进制程序的时候, 加上 -g 选项 2. 开始使用 gdb binFile 退出&#xff1a; ctrl d 或 quit 调…

Java 学习和实践笔记(15):面向过程和面象对象其实很简单!

学完这一节&#xff0c;才真正明白了什么叫面向对象和面向过程&#xff0c;其实很简单~ 第一个例子&#xff1a;怎样把大象装进冰箱 这个很清楚很容易地可以列出第一步。 第二个例子&#xff1a;怎样制造一台汽车 这个就很难确定哪一步做第一步。 面向过程和面向对象的区别 …

笔记:torch.roll

最近在准备写 swin transformer 的文章&#xff0c;记录下 torch.roll 的用法&#xff1a; >>> x torch.tensor([1, 2, 3, 4, 5, 6, 7, 8]).view(4, 2) >>> x tensor([[1, 2],[3, 4],[5, 6],[7, 8]]) 第0维度向下移1位&#xff0c;多出的[7,8]补充到顶部 &g…