洗牌在生活中十分常见,现在需要写一个程序模拟洗牌的过程。现在需要洗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个数al, 2 . ...2n (l s ai≤ 1000)。表示原始牌组从上到下的序列。
输出描述:
对于每组数据,输出一行,最终的序列。数字之间用空格隔开,不要在行末输出多余的空格。

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc =new Scanner(System.in);int T= sc.nextInt();for (int i = 0; i < T; i++) {int n=sc.nextInt();int k= sc.nextInt();int[] arr=new int[2*n];//读取for (int j = 0; j < 2 * n; j++) {arr[j]= sc.nextInt();}//洗for (int j = 0; j < k; j++) {wash(arr,2*n);}//printfor (int j = 0; j < 2*n-1; j++) {System.out.print(arr[j] + " ");}System.out.println(arr[2*n-1]);}}public static void wash(int[] arr,int n) {List<Integer> arrayList=new ArrayList<Integer>();for (int i = 0; i < n/2; i++) {arrayList.add(arr[i]);arrayList.add(arr[i+n/2]);}for (int i = 0; i < n; i++) {arr[i]= arrayList.get(i);}}
}

java----洗牌相关推荐

  1. java洗牌_java语言实现简单的洗牌,发牌

    packagecom.java.lei.homework;importjava.util.Arrays;importjava.util.Random;public classPokerGame {// ...

  2. java 洗牌_java数组之完美洗牌算法

    题目详情 有个长度为2n的数组{a1,a2,a3,...,an,b1,b2,b3,...,bn},希望排序后{a1,b1,a2,b2,....,an,bn},请考虑有无时间复杂度o(n),空间复杂度0 ...

  3. java人工洗牌窗口程序_求解,用JAVA写洗牌与发牌模拟程序

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 import java.util.Random; class card { public String face; public String suit; ...

  4. 【Java】 实现一副扑克牌,包含:洗牌+发牌(3个人,一人5张)+输出牌的信息 的逻辑

    import java.util.ArrayList; import java.util.List; import java.util.Random;class Card{private int ra ...

  5. java练习:模拟试下你斗地主的洗牌、发牌、看牌功能

    /*** 需求:模拟实现斗地主的分牌情形* 分析: 1 模拟牌盒,存储54张牌,0-53 每个数字分别对应一张牌,用Map存储* 2 将0-53序号随机分发到三个人手中,欲实现序号的随机排序,考虑使用 ...

  6. Java中使用HashMap,TreeSet和List来实现模拟斗地主的洗牌和发牌的小例子

    模拟斗地主洗牌,发牌  使用HashMap,TreeSet和List来实现 效果如下图所示: 详细实现代码如下: package star.july.tags;import java.util.Arr ...

  7. java使用集合模拟斗地主洗牌发牌案例

    package com.itheima.模拟斗地主.斗地主版本2;import java.util.ArrayList; import java.util.Collections; import ja ...

  8. Java扑克牌(洗牌Collections.shuffle)

    Java.util.Collections类下有一个静态的shuffle()方法,如下: 1)static void shuffle(List<?> list)  使用默认随机源对列表进行 ...

  9. Java——集合(模拟斗地主洗牌和发牌进行排序)

    //改进版,没有进行按牌的地位从小到大排序 package com.yy.test;import java.util.ArrayList; import java.util.Collections;p ...

  10. java collections_扫盲java.util.Collections工具包,学习排序、二分、洗牌、旋转算法

    作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 算法是数据结构的灵魂! 好的算法搭配上合适的数据结构,可以让代码功能大大的提升效率. ...

最新文章

  1. 领域驱动设计(DDD:Domain-Driven Design)
  2. STM32开发 -- Visual Studio C++编写串口上位机
  3. nginx php-fpm 输出php错误日志(转)
  4. option标签selected=selected属性失效的问题
  5. python3 gui协程_Python3进阶-协程
  6. Java高级语法笔记-匿名类(Anonymous Class)
  7. Linux指令设置波特率停止位,linux下的picocom怎么设置停止位,波特率
  8. 大数据_Flink_流式处理_简介_流数处理的发展演变---Flink工作笔记0004
  9. java rx_史上最浅显易懂的RxJava入门教程
  10. C语言嵌入式系统编程修炼之(四)屏幕操作
  11. 感谢大家对课程的关注和喜爱
  12. python_numpy的基础
  13. WPS中表格中上下线的磅数调整问题-三线表制作
  14. 党建管理系统开发,组织部干部人事任免平台建设方案
  15. android高帧率模式,《和平精英》等五款游戏已经适配小米10系列高帧率模式
  16. 音乐播放器mplayer的简单使用
  17. 微信撤回的消息能恢复吗?微信撤回的消息怎么恢复
  18. EXSI虚拟机备份—ikuai和OPenWRT
  19. 开汉庭酒店赚钱吗?三年的问题逐渐有答案了
  20. Markdown入门指南 --写博客,word必备技术

热门文章

  1. 黑帽seo收徒:黑帽SEO的常见方法以及遇到问题怎么解决
  2. lol提示游戏环境异常重启计算机,lol游戏环境异常请重启机器,小编告诉你lol游戏环境异常请重启机器怎么解决...
  3. 我想跳槽了,该怎么办?,flutter路由切换动画
  4. 视频特效编辑软件After Effects 2022 for Mac(ae 2022) v22.6.0中文版
  5. 菜鸟笔记python元组列表字典
  6. 励志语录,送给正在努力奋斗的人!
  7. bat调用python脚本并获取返回值_python生成bat脚本,并且执行bat脚本
  8. 巧用符号链接移动文件夹位置
  9. 视觉中国的NoSQL之路-从mysql迁移到Mongodb
  10. 通过拼数据库碎片的方式恢复虚拟机磁盘文件丢失问题