package com.nxz.blog.otherTest;import java.util.Queue;
import java.util.Stack;
import java.util.concurrent.LinkedBlockingQueue;public class Test02 {/*** 扑克游戏——“小猫钓鱼”。游戏的规则是这样的:将一副扑克牌平均分成两份,每人拿一份。小哼先拿出手中的* 第一张扑克牌放在桌上,然后小哈也拿出手中的第一张扑克牌,并放在小哼刚打出的扑克牌* 的上面,就像这样两人交替出牌。出牌时,如果某人打出的牌与桌上某张牌的牌面相同,即* 可将两张相同的牌及其中间所夹的牌全部取走,并依次放到自己手中牌的末尾。当任意一人* 手中的牌全部出完时,游戏结束,对手获胜*/private static Queue<Integer> q1 = new LinkedBlockingQueue<Integer>();private static Queue<Integer> q2 = new LinkedBlockingQueue<Integer>();private static Stack<Integer> stack = new Stack<>();/*** 以上规则要求可以使用两个队列来表示每个人手中的牌,一个栈表示桌面上的牌,一个数组来判断时候存在相同的牌** @param args*/public static void main(String[] args) {//初始化两个队列,也就是每个人手中的牌int[] arr1 = new int[]{2, 4, 1, 2, 5, 6};int[] arr2 = new int[]{3, 1, 3, 5, 6, 4};for (int i : arr1) {q1.add(i);}for (int i : arr2) {q2.add(i);}//初始化判断桌面上有牌的数组,大小为10,因为本次测试中不同牌的个数为最多为9个int[] book = new int[10];//当向桌上扔牌时,就表示向stack中入栈,同时在数组中索引为牌的值的位置加1,表示桌面上已经有这个牌了//循环扔牌while (!q1.isEmpty() && !q2.isEmpty()) {//定义一个临时变量,表示当前扔的牌int temp;//stack弹出的int t;temp = q1.poll();if (book[temp] == 0) {stack.push(temp);book[temp] = 1;} else {//表示桌面上已经存在book[temp] = 0;q1.add(temp);while (!stack.isEmpty() && (t = stack.pop()) > 0) {book[t] = 0;q1.add(t);if (t == temp) {break;}}}if(q1.isEmpty()){break;}temp = q2.poll();if (book[temp] == 0) {stack.push(temp);book[temp] = 1;} else {//表示桌面上已经存在q2.add(temp);book[temp] = 0;while (!stack.isEmpty() && (t = stack.pop()) > 0) {book[t] = 0;q2.add(t);if (t == temp) {break;}}}if(q2.isEmpty()){break;}System.out.println();System.out.print("stack:");stack.stream().forEach(item -> {System.out.print(item);});}//判断输赢if(q1.isEmpty()){System.out.println("第二个人获胜");Object[] objects = q2.toArray();for (Object object : objects) {System.out.print(object);}}if(q2.isEmpty()){System.out.println("第一个胜利");Object[] objects = q1.toArray();for (Object object : objects) {System.out.print(object);}}System.out.println();stack.stream().forEach(item -> {System.out.print(item);});}}

第二个人获胜
1652341
34562
Process finished with exit code 0

基础-栈队列简单测试相关推荐

  1. 单调栈与单调队列简单例题

    单调栈与单调队列简单例题 单调栈: POJ3250 题意:有n只奶牛排成一列向右看,每头奶牛只能看到比自己矮的奶牛,即会被高的奶牛挡住后面,问共有多少只奶牛能被看到 思路:考虑每头奶牛能被前面牛看到的 ...

  2. 银行业务队列简单模拟Java程序设计_PTA 数据结构 银行业务队列简单模拟

    仅供参考,请勿粘贴 设某银行有A.B两个业务窗口,且处理业务的速度不一样,其中A窗口处理速度是B窗口的2倍 -- 即当A窗口每处理完2个顾客时,B窗口处理完1个顾客.给定到达银行的顾客序列,请按业务完 ...

  3. 常见数据结构和算法实现(排序/查找/数组/链表/栈/队列/树/递归/海量数据处理/图/位图/Java版数据结构)

    常见数据结构和算法实现(排序/查找/数组/链表/栈/队列/树/递归/海量数据处理/图/位图/Java版数据结构) 数据结构和算法作为程序员的基本功,一定得稳扎稳打的学习,我们常见的框架底层就是各类数据 ...

  4. c++ 优先队列_C/C++数据结构:队列结构最全解析!带你零基础入门队列结构

    前言 上一章节针对于C语言栈结构做了解析,不清楚的可以回顾一下. 本章节主要针对于C语言的基础数据结构队列做以解析. 数据结构之队列 队列是一种特殊的 线性表 ,特殊之处在于它只允许在表的前端(fro ...

  5. rabbitmq java 测试_RabbitMQ 简单测试

    RabbitMQ 测试 RabbitMQ 基于Erlang 实现, 客户端可以用Python | Java | Ruby | PHP | C# | Javascript | Go等语言来实现.这里做个 ...

  6. 7-18 银行业务队列简单模拟

    7-18银行业务队列简单模拟 完整题目 **输入格式:** **输出格式:** **输入样例:** **输出样例:** **具体思路** **完整代码实现:** 我的一些问题 完整题目 设某银行有A. ...

  7. 7-18 银行业务队列简单模拟 (25 分)

    7-18 银行业务队列简单模拟 (25 分) 设某银行有A.B两个业务窗口,且处理业务的速度不一样,其中A窗口处理速度是B窗口的2倍 -- 即当A窗口每处理完2个顾客时,B窗口处理完1个顾客.给定到达 ...

  8. 黑马程序员 C语言数据结构与算法之线性表(链表/栈/队列/顺序表)

    C语言 链表基础知识清晰讲解(黑马) 讲的蛮好,就是音质不太好,有时听不清讲的啥! [黑马]数据结构与算法之线性表(链表/栈/队列/顺序表)[配套源码 嘛蛋,看错了,这是java的... 文章目录 链 ...

  9. java循环的概念_Java数据结构之循环队列简单定义与用法示例

    本文实例讲述了Java数据结构之循环队列简单定义与用法.分享给大家供大家参考,具体如下: 一.概述: 1.原理: 与普通队列的区别在于循环队列添加数据时,如果其有效数据end == maxSize - ...

最新文章

  1. Hadoop学习笔记系列文章导航
  2. Condition总结-CountDownLatch源码分析
  3. 在原生js中的事件监听方法
  4. [EDA] 给出一个状态机,请把它的组合进程分为2个,分别命名为COM1和COM2,其中:COM1实现对外的控制信号输出,COM2实现状态译码。
  5. 69.Daily Temperatures(日常气温)
  6. 学术论文参考文献书写规范
  7. Android 源码结构简介
  8. Linux中rz命令与sz命令
  9. PCI-E接口的学习
  10. 计算机实习生听课记录,实习生听课记录
  11. unity 设置image透明度_Unity透明效果-透明度测试
  12. ckeditor5-vue自定义图片上传函数
  13. ios开发——实用技术篇Block/KVO/通知/代理
  14. 创蓝253短信验证码接口接入常见问题
  15. 金山云郝明非:一年上线整套流媒体处理服务
  16. spark知识点_RDD
  17. 产品思维的修炼–技术的必修课
  18. ##一份关于食堂工作人员的报告
  19. 新基建赛场上 宁畅ODM为何备受青睐?
  20. Free Download Manager 浏览器插件

热门文章

  1. java员工信息管理_基于jsp的员工信息管理-JavaEE实现员工信息管理 - java项目源码...
  2. mysql源码启动_Mysql源码安装、配置、初始化及启动
  3. PHP底层运行原理初探
  4. centos 下载 哪个版本_生信分析平台搭建(十六):CentOS
  5. matlab仿真图片png,Simulink仿真入门到精通(六) Simulink模型保存为图片
  6. window系统下安装TensorFlow-gpu
  7. c语言学指针变量,C语言指针变量学习五
  8. hbuilder怎么没法插入字符了_一个你所不知道的加密方式--零宽字符加密
  9. 光纤通道速率查看_基于OM3/OM4的光纤通道连接方案
  10. 汽车租赁php参考文献,求租赁或者汽车租赁的英文参考文献