java蓝桥杯练习 拉马车

资源限制
时间限制:1.0s 内存限制:256.0MB
问题描述
  小的时候,你玩过纸牌游戏吗?
  有一种叫做“拉马车”的游戏,规则很简单,却很吸引小朋友。

其规则简述如下:
  假设参加游戏的小朋友是A和B,游戏开始的时候,他们得到的随机的纸牌序列如下:
  A方:[K, 8, X, K, A, 2, A, 9, 5, A]
  B方:[2, 7, K, 5, J, 5, Q, 6, K, 4]

其中的X表示“10”,我们忽略了纸牌的花色。

从A方开始,A、B双方轮流出牌。

当轮到某一方出牌时,他从自己的纸牌队列的头部拿走一张,放到桌上,并且压在最上面一张纸牌上(如果有的话)。

此例中,游戏过程:
  A出K,B出2,A出8,B出7,A出X,此时桌上的序列为:

K,2,8,7,X

当轮到B出牌时,他的牌K与桌上的纸牌序列中的K相同,则把包括K在内的以及两个K之间的纸牌都赢回来,放入自己牌的队尾。注意:为了操作方便,放入牌的顺序是与桌上的顺序相反的。
  此时,A、B双方的手里牌为:
  A方:[K, A, 2, A, 9, 5, A]
  B方:[5, J, 5, Q, 6, K, 4, K, X, 7, 8, 2, K]

赢牌的一方继续出牌。也就是B接着出5,A出K,B出J,A出A,B出5,又赢牌了。
  5,K,J,A,5
  此时双方手里牌:
  A方:[2, A, 9, 5, A]
  B方:[Q, 6, K, 4, K, X, 7, 8, 2, K, 5, A, J, K, 5]

注意:更多的时候赢牌的一方并不能把桌上的牌都赢走,而是拿走相同牌点及其中间的部分。但无论如何,都是赢牌的一方继续出牌,有的时候刚一出牌又赢了,也是允许的。

当某一方出掉手里最后一张牌,但无法从桌面上赢取牌时,游戏立即结束。

对于本例的初始手牌情况下,最后A会输掉,而B最后的手里牌为:

9K2A62KAX58K57KJ5

本题的任务就是已知双方初始牌序,计算游戏结束时,赢的一方手里的牌序。当游戏无法结束时,输出-1。

输入为2行,2个串,分别表示A、B双方初始手里的牌序列。
  输出为1行,1个串,表示A先出牌,最后赢的一方手里的牌序。
样例输入
96J5A898QA
6278A7Q973
样例输出
2J9A7QA6Q6889977
样例输入
25663K6X7448
J88A5KJXX45A
样例输出
6KAJ458KXAX885XJ645
数据规模和约定
  我们约定,输入的串的长度不超过30

资源约定:
  峰值内存消耗(含虚拟机) < 256M
  CPU消耗 < 1000ms

请严格按要求输出,不要画蛇添足地打印类似:“请您输入…” 的多余内容。

注意:
  main函数需要返回0;
  只使用ANSI C/ANSI C++ 标准;
  不要调用依赖于编译环境或操作系统的特殊函数。
  所有依赖的函数必须明确地在源文件中 #include
  不能通过工程设置而省略常用头文件。

提交程序时,注意选择所期望的语言类型和编译器类型。

----------------------------

笨笨有话说:
  不断删除前边的,又要后边添加… 如果用数组,需要开一个大点的,请佛祖保佑在游戏结束前,不会用到数组的边缘。

歪歪有话说:
  反正串也不长,不如每次操作都返回一个新的串。

默默有话说:
  我一般都不吱声,这是典型的队列结构,动态数组最好,没有?自己造一个呗!
  
就是小时候玩扑克牌游戏,谁把对方的牌赢光,谁就赢了,没牌的就输了。

//java codeimport java.util.*;public class Main {static StringBuffer a=new StringBuffer();//A的牌static StringBuffer b=new StringBuffer();//B的牌static StringBuffer c=new StringBuffer();//桌面上的牌int t;//A的第一张牌或B的第一张牌public static void main(String[] args) {Scanner sc=new Scanner(System.in);String ap,bp;ap=sc.next();bp=sc.next();a.append(ap);b.append(bp);Main cp=new Main();cp.acp();}private void acp(){//A出牌t=c.toString().indexOf(a.charAt(0));//桌面上A即将出的牌的位置,若没牌则为t=-1c.append(a.charAt(0));//A将牌放在桌面上if(t!=-1){//若有A的牌,则A可收牌c.reverse();//反转,为A收牌做准备a.append(c.substring(0,c.length()-t));// a收取原先桌面上牌的t到最后一张牌,(因为桌面反转,所以是反着收的)c.reverse();//反转,将桌面复原c.delete(t,c.length());//删除桌面上A赢走的牌(t到最后一张牌),最后一张牌是刚放进去的a.deleteCharAt(0);//A删掉出的牌acp();}else {//否则,A出牌完了,B接着出牌a.deleteCharAt(0);if(a.length()==0)System.out.println(b);//游戏结束,B赢了,输出B的牌elsebcp();}}private void bcp(){//B出牌t=c.toString().indexOf(b.charAt(0));c.append(b.charAt(0));if(t!=-1){c.reverse();b.append(c.substring(0,c.length()-t));c.reverse();c.delete(t,c.length());b.deleteCharAt(0);bcp();}else {b.deleteCharAt(0);if(b.length()==0)System.out.println(a);elseacp();}}
}

java蓝桥杯练习 拉马车相关推荐

  1. 2017第八届蓝桥杯 08 拉马车(java)

    标题:拉马车 小的时候,你玩过纸牌游戏吗? 有一种叫做"拉马车"的游戏,规则很简单,却很吸引小朋友. 其规则简述如下: 假设参加游戏的小朋友是A和B,游戏开始的时候,他们得到的随机 ...

  2. 蓝桥杯 PREV-43 拉马车(试题解析)

    试题 历届试题 拉马车 提交此题   评测记录 资源限制 时间限制:1.0s   内存限制:256.0MB 问题描述 小的时候,你玩过纸牌游戏吗? 有一种叫做"拉马车"的游戏,规则 ...

  3. 标题 日期问题java蓝桥杯,日期类的使用(java)-蓝桥杯

    蓝桥杯日期问题常考,java提供了日期类很方便: //日历类 Calendar c = Calendar.getInstance(); // 获取实例化对象 Date date =c.getTime( ...

  4. java蓝桥杯练习 学做菜

    java蓝桥杯练习 学做菜 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 涛涛立志要做新好青年,他最近在学做菜.由于技术还很生疏,他只会用鸡蛋,西红柿,鸡丁,辣酱这四种原料来做菜, ...

  5. java蓝桥杯练习 蜜蜂飞舞

    java蓝桥杯练习 蜜蜂飞舞 资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述 "两只小蜜蜂呀,飞在花丛中呀--" 话说这天天上飞舞着两只蜜蜂,它们在跳一种奇怪的舞 ...

  6. Java 蓝桥杯 我们的征途是星辰大海

    Java 蓝桥杯 我们的征途是星辰大海 最新的火星探测机器人curiosity被困在了一个二维迷宫里,迷宫由一个个方格组成. 共有四种方格: '.' 代表空地,curiosity可以穿过它 '#' 代 ...

  7. JAVA 蓝桥杯 算法提高 阮小二买彩票

    JAVA 蓝桥杯 算法提高 阮小二买彩票 资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述 在同学们的帮助下,阮小二是变的越来越懒了,连算账都不愿意自己亲自动手了,每天的工作就是坐在电 ...

  8. java蓝桥杯练习 幸运数

    java蓝桥杯练习 幸运数 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 幸运数是波兰数学家乌拉姆命名的.它采用与生成素数类似的"筛法"生成. 首先从1开始写出 ...

  9. java蓝桥杯加法变乘法_蓝桥杯-加法变乘法-java

    /* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 * All rights reserved. * 文件名称: ...

最新文章

  1. mail 发送email
  2. 今日 Paper | 协作蒸馏;人脸反欺骗;人脸表示;3D-CariGAN等
  3. 自己动手制作笔记本SP2系统安装光盘
  4. 05丨数据同步:主从库如何实现数据一致
  5. 允许同站跨域Nginx配置方案
  6. 一个php请求的执行过程,PHP程序执行的过程原理
  7. Flutter进阶—质感设计之标签栏
  8. Mock Serverj
  9. http://item.jd.com/1275996920.html
  10. java编写一个方法printn_Java语言程序设计 基础篇 原书第10版 ,梁勇著 (第六章)编程练习题...
  11. 云栖大会 | Greenplum 6.0内核优化解读和7.0展望
  12. InstallShield
  13. IT零起点转FICO学习路线(转)
  14. 抖音小店无货源:为什么现在95后都不想上班,想着去创业?
  15. 函数极限:函数极限的多种形式
  16. 毕业论文的页眉页脚?奇偶页不同?前言作为第一页?……?这样弄!
  17. 在vue中使用Echarts的3D柱状图
  18. 关键路径问题java_关键路径问题课程设计Java
  19. 【论文阅读】Realtime Robust Malicious Traffic Detection via Frequency DomainAnalysis
  20. 主要的技术Blog网站

热门文章

  1. 例1.1-2 Strongbox
  2. spring实战笔记_第4章
  3. (转载)国内和国外DNS服务器地址 全国各地电信DNS服务器地址
  4. Fabrice Bellard其人
  5. == 和 ===区别
  6. 2020云盘点:信创云蓬勃发展,带动中国云计算市场快速增长
  7. 飞车竞速-姜雪伟-专题视频课程
  8. 原神如何修改服务器,原神PC端界面太大怎么修改 pc窗口界面调整方法分享[多图]...
  9. 寻呼(Paging)
  10. 创新方法72变(荣振环)