网易2018校招(秋招)算法编程题之一-求经过K次操作的不稳定值及操作过程

本文主要是介绍网易2018校招(秋招)算法编程题之一-求经过K次操作的不稳定值及操作过程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目描述:

用一些立方体堆成一些塔

定义:不稳定值为这些塔中最高的塔和最低的塔的高度差

为了让这些塔尽量稳定,进行如下操作:每次从某座塔上取下一块立方体,并放到另一座塔上

注意:不能放到原塔上

 

输入描述:

第一行两个数n,k(1<=n<=100, 1<=k<=1000)表示塔的数量以及最多操作次数

第二行n个数,ai(1<=ai<=10^4)表示第i座塔的初始高度

 

输出描述:

第一行两个数s,m,表示最小的不稳定值和操作次数(m<=k)

接下来的m行,每行两个数x,y表示从第x座塔上取下一块立方体放到第y座塔上

 

示例:

输入

3 2

5 8 5

输出

0 2

2 1

2 3

 

思路:

 

先定义一个更新塔高度的函数,输入为所有塔的高度,输出为更新操作之后塔的高度,以及操作后的不稳定值,操作过程

再定义一个小于操作数的范围,去进行迭代更新,终止条件为不稳定值为0或者操作数等于允许最大操作数

 

代码如下:

# -*- coding:utf-8 -*-
import numpy as np
class Solution:### 迭代操作def Find(self, tower, values):# write code herea = np.zeros((values[1]))b = np.zeros((values[1]))for i in range(values[1]):tower, value, a[i], b[i] = s.update(tower)if value == 0:return i+1, value, a, breturn values[1], value, a, b### 更新塔高度 并返回更新操作之后塔的高度,以及操作后的不稳定值,操作过程def update(self, tower):maxinum = max(tower)mininum = min(tower)maxindex = tower.index(maxinum)minindex = tower.index(mininum)tower[maxindex], tower[minindex] = maxinum-1, mininum+1return tower, max(tower)-min(tower), maxindex, minindexwhile True:try:s = Solution()### 数据输入 与 处理values = input()tower = input()values = values.split(' ')tower = tower.split(' ')values[0], values[1] = eval(values[0]), eval(values[1])for i in range(values[0]):tower[i] = eval(tower[i])### 计算opra_num, num, x, y = s.Find(tower, values)### 输出print(num, opra_num)for i in range(opra_num):print((int(x[i])+1), (int(y[i])+1))except:break

 

这篇关于网易2018校招(秋招)算法编程题之一-求经过K次操作的不稳定值及操作过程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/340921

相关文章

使用雪花算法产生id导致前端精度缺失问题解决方案

《使用雪花算法产生id导致前端精度缺失问题解决方案》雪花算法由Twitter提出,设计目的是生成唯一的、递增的ID,下面:本文主要介绍使用雪花算法产生id导致前端精度缺失问题的解决方案,文中通过代... 目录一、问题根源二、解决方案1. 全局配置Jackson序列化规则2. 实体类必须使用Long封装类3.

Python文件操作与IO流的使用方式

《Python文件操作与IO流的使用方式》:本文主要介绍Python文件操作与IO流的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、python文件操作基础1. 打开文件2. 关闭文件二、文件读写操作1.www.chinasem.cn 读取文件2. 写

Java实现MinIO文件上传的加解密操作

《Java实现MinIO文件上传的加解密操作》在云存储场景中,数据安全是核心需求之一,MinIO作为高性能对象存储服务,支持通过客户端加密(CSE)在数据上传前完成加密,下面我们来看看如何通过Java... 目录一、背景与需求二、技术选型与原理1. 加密方案对比2. 核心算法选择三、完整代码实现1. 加密上

SQL常用操作精华之复制表、跨库查询、删除重复数据

《SQL常用操作精华之复制表、跨库查询、删除重复数据》:本文主要介绍SQL常用操作精华之复制表、跨库查询、删除重复数据,这些SQL操作涵盖了数据库开发中最常用的技术点,包括表操作、数据查询、数据管... 目录SQL常用操作精华总结表结构与数据操作高级查询技巧SQL常用操作精华总结表结构与数据操作复制表结

Python 异步编程 asyncio简介及基本用法

《Python异步编程asyncio简介及基本用法》asyncio是Python的一个库,用于编写并发代码,使用协程、任务和Futures来处理I/O密集型和高延迟操作,本文给大家介绍Python... 目录1、asyncio是什么IO密集型任务特征2、怎么用1、基本用法2、关键字 async1、async

Springboot实现推荐系统的协同过滤算法

《Springboot实现推荐系统的协同过滤算法》协同过滤算法是一种在推荐系统中广泛使用的算法,用于预测用户对物品(如商品、电影、音乐等)的偏好,从而实现个性化推荐,下面给大家介绍Springboot... 目录前言基本原理 算法分类 计算方法应用场景 代码实现 前言协同过滤算法(Collaborativ

Java使用Stream流的Lambda语法进行List转Map的操作方式

《Java使用Stream流的Lambda语法进行List转Map的操作方式》:本文主要介绍Java使用Stream流的Lambda语法进行List转Map的操作方式,具有很好的参考价值,希望对大... 目录背景Stream流的Lambda语法应用实例1、定义要操作的UserDto2、ListChina编程转成M

Git可视化管理工具(SourceTree)使用操作大全经典

《Git可视化管理工具(SourceTree)使用操作大全经典》本文详细介绍了SourceTree作为Git可视化管理工具的常用操作,包括连接远程仓库、添加SSH密钥、克隆仓库、设置默认项目目录、代码... 目录前言:连接Gitee or github,获取代码:在SourceTree中添加SSH密钥:Cl

使用Java将各种数据写入Excel表格的操作示例

《使用Java将各种数据写入Excel表格的操作示例》在数据处理与管理领域,Excel凭借其强大的功能和广泛的应用,成为了数据存储与展示的重要工具,在Java开发过程中,常常需要将不同类型的数据,本文... 目录前言安装免费Java库1. 写入文本、或数值到 Excel单元格2. 写入数组到 Excel表格

Java并发编程之如何优雅关闭钩子Shutdown Hook

《Java并发编程之如何优雅关闭钩子ShutdownHook》这篇文章主要为大家详细介绍了Java如何实现优雅关闭钩子ShutdownHook,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起... 目录关闭钩子简介关闭钩子应用场景数据库连接实战演示使用关闭钩子的注意事项开源框架中的关闭钩子机制1.