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校园招聘编程题——洗牌相关推荐

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

    本文实例为大家分享了网易有道2017内推编程题:洗牌,供大家参考,具体内容如下 ''' [编程题] 洗牌 时间限制:1秒 空间限制:32768K 洗牌在生活中十分常见,现在需要写一个程序模拟洗牌的过程 ...

  2. 有道python网课怎么样-网易有道2017内推编程题 洗牌(python)

    本文实例为大家分享了网易有道2017内推编程题:洗牌,供大家参考,具体内容如下 ''' [编程题] 洗牌 时间限制:1秒 空间限制:32768K 洗牌在生活中十分常见,现在需要写一个程序模拟洗牌的过程 ...

  3. 网易有道2017内推编程题

    网易有道2017内推编程题 两道题,都只要找到了规律就比较好些,然后就是一些细节处理! 题目一 洗牌在生活中十分常见,现在需要写一个程序模拟洗牌的过程. 现在需要洗2n张牌,从上到下依次是第1张,第2 ...

  4. 洗牌 --网易有道2017内推编程题

    题目描述 洗牌在生活中十分常见,现在需要写一个程序模拟洗牌的过程. 现在需要洗2n张牌,从上到下依次是第1张,第2张,第3张一直到第2n张.首先,我们把这2n张牌分成两堆,左手拿着第1张到第n张(上半 ...

  5. 滴滴2017校园招聘编程题——阶乘末尾0的个数

    1.题目如下图所示: 2.分析:         这个题目描述的很简单,思路看似也很清晰,我们第一想到的肯定就是正常计算和统计--先计算N!阶乘的结果,然后统计结果末尾0的个数.看似这是一个很好的也很 ...

  6. 美团点评2017校园招聘编程题--取红包

    题目: 圆桌上放了一圈红包形成环形,每个红包金额不同,围绕圆桌走一圈选择若干红包,规则是不能拿相邻的红包,请问拿到红包最多的总金额是多少? 输入: 红包个数N N行数组表示N个红包 输出: 最多的总金 ...

  7. 小米2017校园招聘编程题

    题目: 代码: #include<iostream> #include<vector> #include<map> #include<sstream> ...

  8. 网易 2019 秋季校园招聘编程题真题集合

    网易 2019 秋季校园招聘编程题真题集合 第一题 俄罗斯方块 问题描述 小易有一个古老的游戏机,上面有着经典的游戏俄罗斯方块.因为它比较古老,所以规则和一般的俄罗斯方块不同. 荧幕上一共有 n 列, ...

  9. 美图2018届校园招聘编程题(AC)

    今天分享一下热乎乎的美图2018届校园招聘编程题的代码实现,详情如下. 首先揭秘一下四天前的智商题: 解答:再倒出一片A,然后把这四颗药片各自一分为二,吃每颗药片的一半,剩下的明天吃即可. 注:(如果 ...

最新文章

  1. java user.dir 设置_使用java系统属性user.dir读取配置文件
  2. 结构主题模型(一)stm包工作流
  3. swift5.x基础知识入门
  4. ios自带NSURLConnection下载文件
  5. Codeforces Round 496
  6. 第 14 章 垃圾回收概述
  7. 文本框输入限制正则表达式收集
  8. Android NDK开发之 NEON使用介绍
  9. Vue.js的IoC容器模式探索
  10. ASP.NET--邮件发送
  11. 微分方程和差分方程的区别与联系
  12. 30岁张一鸣创业成功秘密武器,OKR“失控”管理法
  13. 详解-线性结构-一元多项式的乘法与加法运算
  14. 互联网时代,站对了风口,猪都能飞起来
  15. c语言中不能在变量名函数名关键字中插入,C语言中,不能在变量名、函数名、关键字中插入空格和空行。...
  16. PPT模板制作图片折叠效果怎么做?
  17. Mac 终端——常用命令语
  18. 电脑蓝屏,睿频导致CPU温度过高解决方法
  19. 用html写一个个人简历
  20. 《理解专业程序员》读书笔记

热门文章

  1. vue 插入word模板 项目_vue项目前端导出word文件(bug解决)
  2. C# 将object类型转换成List
  3. 两条直线相交的证明以及交点的求解
  4. 影像基础-----CT-MRI图像的特点和临床应用
  5. firefox js服务器上怎么显示图片的绝对路径,js兼容火狐显示上传图片预览效果的方法...
  6. Python实现粒子群PSO算法
  7. echart 反向 极坐标轴_ECharts极坐标系角度轴刻度的属性
  8. 节能环保,让我们还地球一碧水蓝天
  9. linux命令系列 alias,Linux命令整合之alias
  10. Thread类和Runnable接口的优劣