python 内推_[宜配屋]听图阁

本文实例为大家分享了网易有道2017内推编程题:洗牌,供大家参考,具体内容如下

'''

[编程题] 洗牌

时间限制:1秒

空间限制:32768K

洗牌在生活中十分常见,现在需要写一个程序模拟洗牌的过程。 现在需要洗2n张牌,

从上到下依次是第1张,第2张,第3张一直到第2n张。首先,我们把这2n张牌分成两堆,

左手拿着第1张到第n张(上半堆),右手拿着第n+1张到第2n张(下半堆)。

接着就开始洗牌的过程,先放下右手的最后一张牌,再放下左手的最后一张牌,

接着放下右手的倒数第二张牌,再放下左手的倒数第二张牌,直到最后放下左手的第一张牌。

接着把牌合并起来就可以了。 例如有6张牌,最开始牌的序列是1,2,3,4,5,6。首先分成两组,

左手拿着1,2,3;右手拿着4,5,6。在洗牌过程中按顺序放下了6,3,5,2,4,1。

把这六张牌再次合成一组牌之后,我们按照从上往下的顺序看这组牌,就变成了序列1,4,2,5,3,6。

现在给出一个原始牌组,请输出这副牌洗牌k次之后从上往下的序列。

输入描述:

第一行一个数T(T ≤ 100),表示数据组数。对于每组数据,第一行两个数n,k(1 ≤ n,k ≤ 100),

接下来一行有2n个数a1,a2,...,a2n(1 ≤ ai ≤ 1000000000)。表示原始牌组从上到下的序列。

输出描述:

对于每组数据,输出一行,最终的序列。数字之间用空格隔开,不要在行末输出多余的空格。

输入例子1:

3 3 1 1 2 3 4 5 6 3 2 1 2 3 4 5 6 2 2 1 1 1 1

输出例子1:

1 4 2 5 3 6 1 5 4 3 2 6 1 1 1 1

'''

'''

解题思路:散列表

这道题是有道的内推题,所以考点和字典数据集有关,这道题目考的是散列表,如果把新牌放入数组一中,

洗过的牌放入数组二中,那么数组一个数组二之间各个元素的位置存在一定的映射关系。即:

数组一中在j号位置的元素在数组二中的位置是index = (2j % len(数组二)),

如果该位置已经有元素,则index自动加一,搜索下一个位置,直到找到空位置。

这道题目的数据比较简单,其实没必要用散列表做,依靠找规律或者切片就能把做出来,

很多人用的是切片,使用[::2]和[1::2]找出数列二中的所有偶数位和奇数位,把数列一的前n个数和后n个数放进去即可。

但我个人觉得python切片的效率不高,于是换了找规律的方法,如果 2j < 2n , 则index=2j,否则index = index % (2*n) + 1,

如此循环k次。使用这种方法每次都直接找到某张牌在k次洗牌后的位置,避免了大量的切片操作,

也避免了大量在数组中寻找元素并赋值的操作。

(Ps,这倒题目的输入和输出比较坑爹)

'''

'''

代码运行结果:答案正确:恭喜!您提交的程序通过了所有的测试用例

'''

T = int(input())

array_list = []

n, k = [int(each) for each in input().split()]

for x in range(T):

digs = [int(each) for each in input().split()]

array = digs[0:2*n]

results = [None] * (2 * n)

for j in range(2*n):

index = j

for i in range(k):

index = 2 * index

if index >= 2 * n:

index = index % (2*n) + 1

results[index] = array[j]

n, k = digs[-2:]

results = map(str, results)

print(' '.join(results))

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持【听图阁-专注于Python设计】。

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

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

相关文章

linux根目录cat退出,Linux展示cat帮助信息并退出

Linux显示cat帮助信息并退出Linux显示cat帮助信息并退出youhaidongyouhaidong-ThinkPad-Edge-E545:~$ cat --help用法&#xff1a;cat [选项]... [文件]...将[文件]或标准输入组合输出到标准输出。-A, --show-all 等于-vET-b, --number-nonblank 对非空输出行编号-e 等于-vE-E,…

linux 编译字符设备驱动错误,linux字符设备驱动框架及编写流程

流程&#xff1a;init{}exit{}申请设备号 (动态注册/静态注册) 创建一个字符设备 cdev_alloc初始化字符设备 cdev_init设备号和字符设备关联 cdev_add销毁字符设备 cdev_del解注册设备号 unregister_chrdev_region1 设备号设备号分为主设备号和次设备号主设备号表示一类设备次设…

重新下载python以前下的包还用重新安装吗_强制“pip”在切换到其他Python二进制文件后重新编译以前安装的包(numpy)...

这个问题是关于我的特殊问题(我找到了一个解决方法&#xff0c;所以它不是一个紧迫的问题)的问题&#xff0c;也是关于我正在使用的一般过程的问题。设置(工作部分)&#xff1a;我在我的Ubuntu 14.04上本地安装了Python 2.7.9&#xff0c;还有一个运行它的virtualenv。一切都与…

github新建仓库推送代码教学

之前一直用gitee&#xff0c;准备转到github。因为一步一步尝试。如果是新手或许文章会有帮助 点击 new 创建 拉代码 Idea 打开 复制一个 pom 文件作为 maven 管理 提交代码 不出意外的出意外&#xff0c;报错 点击authorize JetBrains 失败 分析问题 本质就是没有…

Linux数码管和点阵程序,随笔:python turtle绘制八段数码管和共阳极8x8led点阵

为更新而更新&#xff0c;为保持更新状态而更新。给学生讲解用gpiozero库控制八段管和8x8共阳极LED点阵。已经讲解了单个LED的控制&#xff0c;RGB彩色灯珠的控制&#xff0c;在讲解八段管就很容易理解&#xff0c;多个八段管的讲解稍微麻烦一点&#xff0c;然后LED点阵为了便于…

linux管理外部工具,linux – 除了iptables之外的数据包管理工具?

我正在寻找可以根据一组规则改变网络数据包的有效内容的linux实用程序.理想情况下,我会使用iptables和netfilter内核模块,但它们不支持通用的有效负载调整&#xff1a;iptables会改变各种头域(地址,端口,TOS等),并且可以匹配数据包中的任意字节,但是它显然无法改变数据包内的任…

一个公网ip多少钱_一个丛书书号多少钱

点击上方“蓝字”&#xff0c;发现更多精彩。联系我们&#xff0c;有惊喜&#xff01;&#xff01;本站点提供&#xff1a;学术出书、自费出书&#xff0c;出版指南攻略、编审润色书稿等服务。如需了解详情&#xff0c;请加责编微信&#xff1a;xueshuzhishi出版出书&#xff0…

嵌入式linux镜像,使用Openembedded定制嵌入式Linux镜像

关键词&#xff1a;ARM,Linux,Openembedded作者&#xff1a;ByToradex秦海摘要&#xff1a;嵌入式设备采用Embedded Linux操作系统进行开发已经越来越成为主流&#xff0c;但是如何将开发完成的Linux uboot/kernel配置&#xff0c;以及应用程序整合到Embedded Linux镜像中以便在…

pythonhtml生成word_python如何实现word批量转HTML

今天我们说一下使用python将word内容转换成html文件。下面一起来看一下。准备工作使用python类库PyDocX&#xff0c;安装方法(使用pip进行安装)&#xff0c;命令如下&#xff1a;类库介绍python-docx是用于创建和更新Microsoft Word(.docx)文件的Python库。它可以针对word做很多…

linux安装 中文乱码怎么解决方法,Linux安装GBK/GB2312程序显示乱码的五种解决方法...

不少用户在Linux系统中安装GBK或GB2312的时候遇到了乱码问题&#xff0c;这主要是系统默认语言是uft8所导致&#xff0c;对于该问题可用五种方法进行解决&#xff0c;接下来是小编为大家收集的Linux安装GBK/GB2312程序显示乱码的五种解决方法&#xff0c;希望能帮到大家。Linux…

关于python序列类型的通用操作符_Python—语法基础(3) 序列类型及操作

序列类型&#xff1a;一维元素向量&#xff0c;元素类型可以不同&#xff0c;通过下标访问序列的特定元素&#xff0c;字符串类型、元组类型、列表类型属于序列类型序列类型通用操作符&#xff1a;x in s         如果x是序列s的元素&#xff0c;返回True&#xff0c;否…

linux 设备驱动总结,linux设备驱动归纳总结(三):3面向对象思想和lseek

linux设备驱动归纳总结(三)&#xff1a;3.设备驱动面向对象思想和lseek的实现一、结构体structfile和struct inode在之前写的函数&#xff0c;全部是定义了一些零散的全局变量。有没有办法整合成到一个结构体当中&#xff1f;这样的话&#xff0c;看起来和用起来都比较方便。接…

idea junit 测试看不到控制台报错信息_高手都这么给 Spring MVC 做单元测试!

本章节主要讲解以下两部分内容&#xff1a;1、Mock 测试简介2、测试用例演示一、Mock 测试简介1、什么是 mock 测试在测试过程中&#xff0c;对于某些不容易构造或者不容易获取的对象&#xff0c;用一个「虚拟的对象」来创建以便测试的测试方法&#xff0c;就是 「mock 测试」在…

windows查询每个线程占用的内存_C#多线程

一、基本概念1、进程首先打开任务管理器&#xff0c;查看当前运行的进程&#xff1a;从任务管理器里面可以看到当前所有正在运行的进程。那么究竟什么是进程呢&#xff1f;进程&#xff08;Process&#xff09;是Windows系统中的一个基本概念&#xff0c;它包含着一个运行程序所…

linux 录屏软件 按键,linux下常用的截图、录屏工具

linux下常用的截图、录屏工具(2010-01-05 10:47:21)由于和老公一起做一个百度俱乐部的小项目&#xff0c;在编写测试文档时要使用截图、录屏的小工具&#xff0c;于是展开搜索什么工具比较好使。录屏&#xff1a;在linux下常用的录屏工具有5种&#xff0c;可以baidu或者google下…

python x_PythonX

而且你的onTouch里面逻辑也有问题&#xff0c;正确写法&#xff1a;public FloatingView (Context context){super(context);mContext context.getApplicationContext();LayoutInflater mLayoutInflater LayoutInflater.from(context);mView mLayoutInflater.inflate(R.layo…

linux把root用户删了,linux root用户没法删除文件

linux文件有用户或用户组权限&#xff0c;即可对文件进行任何操作。但是除了所有者权限&#xff0c;部分文件系统的文件还有扩展属性。拥有超级权限的用户可以使用chattr的权限增加文件扩展属性&#xff0c;这项指令可改变存放在ext2、ext3、ext4、xfs、ubifs、reiserfs、jfs等…

实体类blob类型_Mysql的数据类型和JPA的实体类

​MySQL中定义数据字段的类型对你数据库的优化是非常重要的。MySQL支持多种类型&#xff0c;大致可以分为三类&#xff1a;数值、日期/时间和字符串(字符)类型。数值类型Int,4字节,(-2147483648&#xff0c;2147483647), (0,4294967295)BIGINT,8 字节,(-9223372036854775808,92…

linux操作系统中查看网络信息的命令,Linux查看系统信息命令盘点

Linux查看系统信息命令盘点在Linux系统上有很多操作都是用命令完成的&#xff0c;下面跟yjbys小编一起来看看最新的系统命令吧&#xff0c;希望对大家有所帮助!1.查看系统内核uname -auname -rfile /sbin/init--通过file命令判断系统中的文件时32位还是64位的--64位CPU系统架构…

python git切换分支_git命令之切换分支

Git一般有很多分支&#xff0c;我们clone到本地的一般都是master分支&#xff0c;如何进行分支的切换呢&#xff1f;那么下面带大家简单的看看如何通过命令来切换&#xff1a;1、查看远程仓库及本地的所有分支命令&#xff1a;git branch -aqinjiaxi:~$ git branch -a* masterr…