网易有道2017校园招聘编程题——洗牌
1. 题目
洗牌在生活中十分常见,现在需要写一个程序模拟洗牌的过程。 现在需要洗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)。表示原始牌组从上到下的序列。
输出描述:
对于每组数据,输出一行,最终的序列。数字之间用空格隔开,不要在行末输出多余的空格。
输入例子:
3
3 1
1 2 3 4 5 6
3 2
1 2 3 4 5 6
2 2
1 1 1 1
输出例子:
1 4 2 5 3 6
1 5 4 3 2 6
1 1 1 1
2. 分析
这题没什么特殊要说明的,在草纸上弄明白先后顺序就行。主要注意一下迭代时候,每次上一步迭代作为下一步迭代的输入。
这类的问题还有百度内推时候一道关于完美洗牌的题,感兴趣的可以自己网上找找看。
3. C++程序
#include<iostream>
#include<vector>
using namespace std;
int main()
{int T;cin>>T;for(int i=0;i<T;i++){int n,k;cin>>n>>k;vector<int> nArr(2*n,0); //用vector的好处,可以变量来申请空间。for(int j=0;j<2*n;j++) {cin>>nArr[j];}for(int jj=0;jj<k;jj++){vector<int> tmp(2*n,0);int count =0;for(int s=0;s<n;s++) //核心交换 {tmp[count++] = nArr[s];tmp[count] = nArr[n+s];count++;}nArr = tmp; //每次迭代结果作为下次迭代输入}cout<<nArr[0];for(int ii=1;ii<2*n;ii++){cout<<" "<<nArr[ii];}cout<<endl;} return 0;
}
个人学习记录,由于能力和时间有限,如果有错误望读者纠正,谢谢!
转载请注明出处:CSDN 无鞋童鞋。
网易有道2017校园招聘编程题——洗牌相关推荐
- python 内推_网易有道2017内推编程题 洗牌(python)
本文实例为大家分享了网易有道2017内推编程题:洗牌,供大家参考,具体内容如下 ''' [编程题] 洗牌 时间限制:1秒 空间限制:32768K 洗牌在生活中十分常见,现在需要写一个程序模拟洗牌的过程 ...
- 有道python网课怎么样-网易有道2017内推编程题 洗牌(python)
本文实例为大家分享了网易有道2017内推编程题:洗牌,供大家参考,具体内容如下 ''' [编程题] 洗牌 时间限制:1秒 空间限制:32768K 洗牌在生活中十分常见,现在需要写一个程序模拟洗牌的过程 ...
- 网易有道2017内推编程题
网易有道2017内推编程题 两道题,都只要找到了规律就比较好些,然后就是一些细节处理! 题目一 洗牌在生活中十分常见,现在需要写一个程序模拟洗牌的过程. 现在需要洗2n张牌,从上到下依次是第1张,第2 ...
- 洗牌 --网易有道2017内推编程题
题目描述 洗牌在生活中十分常见,现在需要写一个程序模拟洗牌的过程. 现在需要洗2n张牌,从上到下依次是第1张,第2张,第3张一直到第2n张.首先,我们把这2n张牌分成两堆,左手拿着第1张到第n张(上半 ...
- 滴滴2017校园招聘编程题——阶乘末尾0的个数
1.题目如下图所示: 2.分析: 这个题目描述的很简单,思路看似也很清晰,我们第一想到的肯定就是正常计算和统计--先计算N!阶乘的结果,然后统计结果末尾0的个数.看似这是一个很好的也很 ...
- 美团点评2017校园招聘编程题--取红包
题目: 圆桌上放了一圈红包形成环形,每个红包金额不同,围绕圆桌走一圈选择若干红包,规则是不能拿相邻的红包,请问拿到红包最多的总金额是多少? 输入: 红包个数N N行数组表示N个红包 输出: 最多的总金 ...
- 小米2017校园招聘编程题
题目: 代码: #include<iostream> #include<vector> #include<map> #include<sstream> ...
- 网易 2019 秋季校园招聘编程题真题集合
网易 2019 秋季校园招聘编程题真题集合 第一题 俄罗斯方块 问题描述 小易有一个古老的游戏机,上面有着经典的游戏俄罗斯方块.因为它比较古老,所以规则和一般的俄罗斯方块不同. 荧幕上一共有 n 列, ...
- 美图2018届校园招聘编程题(AC)
今天分享一下热乎乎的美图2018届校园招聘编程题的代码实现,详情如下. 首先揭秘一下四天前的智商题: 解答:再倒出一片A,然后把这四颗药片各自一分为二,吃每颗药片的一半,剩下的明天吃即可. 注:(如果 ...
最新文章
- java user.dir 设置_使用java系统属性user.dir读取配置文件
- 结构主题模型(一)stm包工作流
- swift5.x基础知识入门
- ios自带NSURLConnection下载文件
- Codeforces Round 496
- 第 14 章 垃圾回收概述
- 文本框输入限制正则表达式收集
- Android NDK开发之 NEON使用介绍
- Vue.js的IoC容器模式探索
- ASP.NET--邮件发送
- 微分方程和差分方程的区别与联系
- 30岁张一鸣创业成功秘密武器,OKR“失控”管理法
- 详解-线性结构-一元多项式的乘法与加法运算
- 互联网时代,站对了风口,猪都能飞起来
- c语言中不能在变量名函数名关键字中插入,C语言中,不能在变量名、函数名、关键字中插入空格和空行。...
- PPT模板制作图片折叠效果怎么做?
- Mac 终端——常用命令语
- 电脑蓝屏,睿频导致CPU温度过高解决方法
- 用html写一个个人简历
- 《理解专业程序员》读书笔记
热门文章
- vue 插入word模板 项目_vue项目前端导出word文件(bug解决)
- C# 将object类型转换成List
- 两条直线相交的证明以及交点的求解
- 影像基础-----CT-MRI图像的特点和临床应用
- firefox js服务器上怎么显示图片的绝对路径,js兼容火狐显示上传图片预览效果的方法...
- Python实现粒子群PSO算法
- echart 反向 极坐标轴_ECharts极坐标系角度轴刻度的属性
- 节能环保,让我们还地球一碧水蓝天
- linux命令系列 alias,Linux命令整合之alias
- Thread类和Runnable接口的优劣