java代码拉马车游戏,8届省赛java 拉马车
拉马车
问题描述
小的时候,你玩过纸牌游戏吗?有一种叫做“拉马车”的游戏,规则很简单,却很吸引小朋友。
其规则简述如下:
假设参加游戏的小朋友是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 拉马车相关推荐
- 蓝桥杯第十届省赛java组解析(灵能传输 四星难度,后缀表达式 两星难度)
第一题太简单懒得复制题目了 答案是:490 第二题: 试题 B: 不同子串 本题总分:5 分 [问题描述] 一个字符串的非空子串是指字符串中长度至少为 1 的连续的一段字符组成 的串.例如,字符串aa ...
- java代码解锁华为_如何编写可怕的Java代码?
我决定告诉你如何编写可怕的Java代码.如果你厌倦了所有这些美丽的设计模式和最佳实践,并且想写些疯狂的东西,请继续阅读. 如果你正在寻找有关如何编写良好代码的建议,请查看其它文章! 对一切使用异常 你 ...
- 蓝桥杯第六届省赛JAVA真题----垒骰子
垒骰子 赌圣atm晚年迷恋上了垒骰子,就是把骰子一个垒在另一个上边,不能歪歪扭扭,要垒成方柱体. 经过长期观察,atm 发现了稳定骰子的奥秘:有些数字的面贴着会互相排斥! 我们先来规范一下骰子:1 的 ...
- java 代码智能提示,如何在Eclipse中设置Java、JavaScript、HTML智能代码提示
使用eclipse自带的插件,无需另外安装插件,具体步骤如下 1.打开eclipse→Windows→Preferences→Java→Editor→Content Assist 修改Auto Act ...
- java代码中如何嵌入c语言,Android中Java代码与C的互相调用(JNI的简单使用)
引言 最近在做项目的时候,接触到JNI,想一想自己第一次接触这个东西的时候,还是好久之前,现在既然接触到了,那我就简单的跟大家讲一讲JNI的基本使用方法. JNI(Java Native Interf ...
- 怎么保存java代码怎么写_怎么样能写好Java代码,大神们给点意见?
怎么样能写好?避免不了多学多练.java代码规范详细版 - 百度文库wenku.baidu.com 相信很多初学者都跟我抱有一样的想法"代码写出来是给电脑运行的,能运行起来,实现效果就好了 ...
- 21点 小游戏 java代码_21点游戏java实现
21点的基本知识 21点是世界上比较流行的扑克游戏项目 除掉大小王的一副扑克牌,共计52张牌 21点不区分花色,其中A----10均代表扑克牌本身的点数J Q K代表10点 区分庄家和闲家,其中闲家可 ...
- Java代码猜数字游戏
public static void main(String[] args) {Random r = new Random();int num = r.nextInt(100)+1;Scanner s ...
- 蓝桥杯第七届省赛java组大题解析(“取球博弈”??难度,“压缩变换”三星难度)
第六题 题目: 方格填数 如下的10个格子 +--+--+--+ | 0| 1| 2| +--+--+--+--+ | 3| 4| 5| 6| +--+--+--+--+ | 7| 8| ...
最新文章
- 我应该如何道德地接近用户密码存储以便以后的明文检索?
- 3.Excel数据透视表
- Vue优化策略_项目发布_01
- 西南科技大学城市学院计算机专科,西南科技大学城市学院官网
- 【BZOJ3083】遥远的国度,树链剖分练习
- php mysql 创建数据表_PHP MySQL 创建数据表
- java 类加载的过程
- memset初始化数组的问题
- CMMI、ISO、6sigma、ITIL软件质量管理体系了解
- IDEA左侧project导航栏设置背景色
- Concurrency in C# Cookbook中文翻译 :c#的并发烹饪书
- DIY智能车赛优胜奖开源作品——手机遥控麦克纳姆轮小车(1)
- python出现syntaxerror_python 报错syntaxerror怎么解决
- 计算机天空之城音乐谱,天谕手游天空之城乐谱代码是什么
- 易经——第一卦 乾 乾为天 乾上乾下
- Duplicate showFileChooser result
- 鲁迅吃鱼肝油都不忘战斗
- 听说昨天朋友圈炸开了锅???
- MNE溯源fieldtrip官网教程
- OKR目标与关键结果法