拉马车

问题描述

小的时候,你玩过纸牌游戏吗?有一种叫做“拉马车”的游戏,规则很简单,却很吸引小朋友。

其规则简述如下:

假设参加游戏的小朋友是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

思路:

我把a,b当他们现在的牌序,s表示桌上的牌序。 over表示程序是否结束 over=0结束,x用来判断现在随出牌,用if x==0, if x==1,来判断a和b的出牌。 我用pan(pop)函数判断桌上的收牌和a,b是否手上还有牌。没有over=0 ,题目说当游戏无法结束时,输出-1。我用的是当他时间超过0.8秒就结束程序,因为无法结束就是程序进入死循环中。下面我的思路图。

程序:

import time

a=input()

b=input()

s=""

x=0

over=1

def pan(p):

global s,x,a,b,over

pop=""

s+=p

k=s.index(s[-1])

if k!=len(s)-1:

pop=s[k:]

pop=pop[::-1]

s=s[:k]

if x==1:

a+=pop

x=0

else:

b+=pop

x=1

if a=="" or b=="":

if a=="":

print(b)

else:

print(a)

over=0

sj=time.time()

while 1:

if x==0 and over==1:

pop=a[0]

a=a[1:]

x=1

pan(pop)

if x==1 and over==1:

pop=b[0]

b=b[1:]

x=0

pan(pop)

if over==0:

break

if time.time()-sj>0.8:

print(-1)

break

禁止转载。仅用于自己学习。对程序错误不负责。

java代码拉马车游戏,8届省赛java 拉马车相关推荐

  1. 蓝桥杯第十届省赛java组解析(灵能传输 四星难度,后缀表达式 两星难度)

    第一题太简单懒得复制题目了 答案是:490 第二题: 试题 B: 不同子串 本题总分:5 分 [问题描述] 一个字符串的非空子串是指字符串中长度至少为 1 的连续的一段字符组成 的串.例如,字符串aa ...

  2. java代码解锁华为_如何编写可怕的Java代码?

    我决定告诉你如何编写可怕的Java代码.如果你厌倦了所有这些美丽的设计模式和最佳实践,并且想写些疯狂的东西,请继续阅读. 如果你正在寻找有关如何编写良好代码的建议,请查看其它文章! 对一切使用异常 你 ...

  3. 蓝桥杯第六届省赛JAVA真题----垒骰子

    垒骰子 赌圣atm晚年迷恋上了垒骰子,就是把骰子一个垒在另一个上边,不能歪歪扭扭,要垒成方柱体. 经过长期观察,atm 发现了稳定骰子的奥秘:有些数字的面贴着会互相排斥! 我们先来规范一下骰子:1 的 ...

  4. java 代码智能提示,如何在Eclipse中设置Java、JavaScript、HTML智能代码提示

    使用eclipse自带的插件,无需另外安装插件,具体步骤如下 1.打开eclipse→Windows→Preferences→Java→Editor→Content Assist 修改Auto Act ...

  5. java代码中如何嵌入c语言,Android中Java代码与C的互相调用(JNI的简单使用)

    引言 最近在做项目的时候,接触到JNI,想一想自己第一次接触这个东西的时候,还是好久之前,现在既然接触到了,那我就简单的跟大家讲一讲JNI的基本使用方法. JNI(Java Native Interf ...

  6. 怎么保存java代码怎么写_怎么样能写好Java代码,大神们给点意见?

    怎么样能写好?避免不了多学多练.java代码规范详细版 - 百度文库​wenku.baidu.com 相信很多初学者都跟我抱有一样的想法"代码写出来是给电脑运行的,能运行起来,实现效果就好了 ...

  7. 21点 小游戏 java代码_21点游戏java实现

    21点的基本知识 21点是世界上比较流行的扑克游戏项目 除掉大小王的一副扑克牌,共计52张牌 21点不区分花色,其中A----10均代表扑克牌本身的点数J Q K代表10点 区分庄家和闲家,其中闲家可 ...

  8. Java代码猜数字游戏

    public static void main(String[] args) {Random r = new Random();int num = r.nextInt(100)+1;Scanner s ...

  9. 蓝桥杯第七届省赛java组大题解析(“取球博弈”??难度,“压缩变换”三星难度)

    第六题 题目: 方格填数 如下的10个格子    +--+--+--+    | 0| 1| 2| +--+--+--+--+ | 3| 4| 5| 6| +--+--+--+--+ | 7| 8| ...

最新文章

  1. 我应该如何道德地接近用户密码存储以便以后的明文检索?
  2. 3.Excel数据透视表
  3. Vue优化策略_项目发布_01
  4. 西南科技大学城市学院计算机专科,西南科技大学城市学院官网
  5. 【BZOJ3083】遥远的国度,树链剖分练习
  6. php mysql 创建数据表_PHP MySQL 创建数据表
  7. java 类加载的过程
  8. memset初始化数组的问题
  9. CMMI、ISO、6sigma、ITIL软件质量管理体系了解
  10. IDEA左侧project导航栏设置背景色
  11. Concurrency in C# Cookbook中文翻译 :c#的并发烹饪书
  12. DIY智能车赛优胜奖开源作品——手机遥控麦克纳姆轮小车(1)
  13. python出现syntaxerror_python 报错syntaxerror怎么解决
  14. 计算机天空之城音乐谱,天谕手游天空之城乐谱代码是什么
  15. 易经——第一卦 乾 乾为天 乾上乾下
  16. Duplicate showFileChooser result
  17. 鲁迅吃鱼肝油都不忘战斗
  18. 听说昨天朋友圈炸开了锅???
  19. MNE溯源fieldtrip官网教程
  20. OKR目标与关键结果法

热门文章

  1. html5 点击图片预览放大,jQuery超实用图片放大预览特效插件
  2. armv6 可以通过什么方式检查内存泄露?
  3. 智能回收机、垃圾分拣机器人 垃圾回收这是技术活儿
  4. 使用Amazon SageMaker Feature Store存储、发现并共享机器学习特征
  5. IOS APP开发:苹果app从开发到上架教程详解
  6. 经典计算机基础学科教程推荐[转自:海枫的专栏]
  7. E融汇移动端灰度发布功能演进
  8. uploadify上传图片
  9. Java虚拟机笔记-对象
  10. 揭秘英雄联盟的数据服务器