网易有道2017内推编程题 洗牌(python)


Posted in Python onJune 19, 2019

本文实例为大家分享了网易有道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 相关文章推荐
实例讲解python函数式编程
Jun 09 Python
Python入门教程之运算符与控制流
Aug 17 Python
python3实现全角和半角字符转换的方法示例
Sep 21 Python
Python各类图像库的图片读写方式总结(推荐)
Feb 23 Python
Python学习笔记之函数的定义和作用域实例详解
Aug 13 Python
使用 Python 在京东上抢口罩的思路详解
Feb 27 Python
Python读取文件内容为字符串的方法(多种方法详解)
Mar 04 Python
PyQt5的相对布局管理的实现
Aug 07 Python
python利用google翻译方法实例(翻译字幕文件)
Sep 21 Python
Python3获取cookie常用三种方案
Oct 05 Python
matplotlib bar()实现百分比堆积柱状图
Feb 24 Python
python 实现mysql自动增删分区的方法
Apr 01 Python
pyqt实现.ui文件批量转换为对应.py文件脚本
Jun 19 #Python
网易2016研发工程师编程题 奖学金(python)
Jun 19 #Python
PyQt5的安装配置过程,将ui文件转为py文件后显示窗口的实例
Jun 19 #Python
python调用动态链接库的基本过程详解
Jun 19 #Python
python中使用ctypes调用so传参设置遇到的问题及解决方法
Jun 19 #Python
华为校园招聘上机笔试题 扑克牌大小(python)
Apr 22 #Python
PyQt5实现从主窗口打开子窗口的方法
Jun 19 #Python
You might like
php curl常见错误:SSL错误、bool(false)
2011/12/28 PHP
PHP数据库调用类调用实例(详细注释)
2012/07/12 PHP
destoon安装出现Internal Server Error的解决方法
2014/06/21 PHP
PHP对文件进行加锁、解锁实例
2015/01/23 PHP
thinkphp3.2中Lite文件替换框架入口文件或应用入口文件的方法
2015/05/21 PHP
PHP基于PDO实现的SQLite操作类【包含增删改查及事务等操作】
2017/06/21 PHP
PHP实现的mysql主从数据库状态检测功能示例
2017/07/20 PHP
Thinkphp整合阿里云OSS图片上传实例代码
2019/04/28 PHP
extjs grid设置某列背景颜色和字体颜色的实现方法
2010/09/06 Javascript
js读写cookie实现一个底部广告浮层效果的两种方法
2013/12/29 Javascript
JavaScript中对象介绍
2014/12/31 Javascript
原生JS和JQuery动态添加、删除表格行的方法
2015/05/28 Javascript
jQuery实现TAB选项卡切换特效简单演示
2016/03/04 Javascript
Angularjs中ng-repeat-start与ng-repeat-end的用法实例介绍
2016/12/31 Javascript
jQuery实现网页拼图游戏
2020/04/22 jQuery
vue组件创建的三种方式小结
2020/02/03 Javascript
在vue中实现给每个页面顶部设置title
2020/07/29 Javascript
原生JavaScript实现刮刮乐
2020/09/29 Javascript
vue3.0 自适应不同分辨率电脑的操作
2021/02/06 Vue.js
[02:07]DOTA2新英雄展现中国元素,完美“圣典”亮相央视
2016/12/19 DOTA
Centos7 Python3下安装scrapy的详细步骤
2018/03/15 Python
对Python3中的print函数以及与python2的对比分析
2018/05/02 Python
Python实现操纵控制windows注册表的方法分析
2019/05/24 Python
Python Django 命名空间模式的实现
2019/08/09 Python
Python closure闭包解释及其注意点详解
2019/08/28 Python
基于python3实现倒叙字符串
2020/02/18 Python
解决tensorflow 释放图,删除变量问题
2020/06/23 Python
加拿大最大的书店:Indigo
2017/01/01 全球购物
心碎乌托邦的创业计划书范文
2013/12/26 职场文书
家居饰品店创业计划书
2014/01/31 职场文书
高中生职业生涯规划书
2014/02/24 职场文书
感恩祖国演讲稿
2014/09/09 职场文书
超市员工辞职信范文
2015/05/12 职场文书
遗愿清单观后感
2015/06/09 职场文书
用Python制作灯光秀短视频的思路详解
2021/04/13 Python
关于的python五子棋的算法
2022/05/02 Python