题目:Clock Patience游戏,将52张扑克牌,按时钟依次分成13组(中心一组),每组4张全都背面向上,

从中间组最上面一张牌開始。翻过来设为当前值,然后取当前值相应组中最上面的背过去的牌翻过来。

取这个值为新的当前值,直到不能翻拍游戏结束。求结束时。翻过来的拍数以及最后翻过来的牌;

假设没看明确题目详细规则,百度玩一下就明确了。

分析:模拟,数据结构(DS)。设计13个栈,模拟就可以。

说明:注意题目给的牌的顺序是逆序的,╮(╯▽╰)╭。

#include <algorithm>
#include <iostream>
#include <stack> using namespace std; char Maps[] = "A23456789TJQK"; typedef struct _pnode
{
int value;
char color;
_pnode(int v, char c) {value = v; color = c;}
_pnode(){}
}pnode;
pnode cards[54]; int value(char ch)
{
if (ch >= '2' && ch <= '9')
return ch-'1';
if (ch == 'A') return 0;
if (ch == 'T') return 9;
if (ch == 'J') return 10;
if (ch == 'Q') return 11;
if (ch == 'K') return 12;
} int main()
{
char V,C;
while (cin >> V && V != '#') {
cin >> C;
stack<pnode> Q[13];
cards[0] = pnode(value(V), C);
for (int i = 1; i < 52; ++ i) {
cin >> V >> C;
cards[i] = pnode(value(V), C);
}
for (int i = 51; i >= 0; -- i)
Q[12-i%13].push(cards[i]); int count = 0, index = 12;
pnode now;
while (!Q[index].empty()) {
now = Q[index].top();
Q[index].pop();
index = now.value;
++ count;
} if (count < 10) cout << "0";
cout << count << "," << Maps[now.value] << now.color << endl;
}
return 0;
}

UVa 170 - Clock Patience的更多相关文章

  1. UVa 1637 - Double Patience(概率DP)

    链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  2. ACM学习历程——UVA 127 "Accordian" Patience(栈;模拟)

    Description  ``Accordian'' Patience  You are to simulate the playing of games of ``Accordian'' patie ...

  3. UVa 579 Clock Hands

    水题.. 求任意时刻时针和分针的夹角,其结果在0°到180°之间. 这里又一次用到了sscanf()函数,确实很方便. 思路:我们分别求出时针和分针转过的角度,然后大的减小的,如果结果ans大于180 ...

  4. UVA 1637 Double Patience

    题意:36张扑克,平分成9摞,两张数字一样的可以拿走,每次随机拿两张,问能拿光的概率. 解法:记忆化搜索,状态压缩.一开始我想在还没拿的时候概率是1,然后往全拿光推···样例过不去···后来觉得推反了 ...

  5. UVa 127 - "Accordian" Patience

    题目:52张扑克,从左到右在平面上排列,按着如下规则处理: 1.按照从左到右的顺序,如果一张牌和左边的第一张或者第三张匹配,就把它放到对应的牌上面. 2.如果可以移动到多个位置,移动到最左端的牌上面. ...

  6. html5、canvas绘制本地时钟

    效果图: 代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...

  7. HTML5新增Canvas标签及对应属性、API详解(基础一)

    知识说明: HTML5新增的canvas标签,通过创建画布,在画布上创建任何想要的形状,下面将canvas的API以及属性做一个整理,并且附上时钟的示例,便于后期复习学习!Fighting! 一.标签 ...

  8. 数学期望和概率DP题目泛做(为了对应AD的课件)

    题1: Uva 1636 Headshot 题目大意: 给出一个000111序列,注意实际上是环状的.问是0出现的概率大,还是当前是0,下一个还是0的概率大. 问题比较简单,注意比较大小: A/C & ...

  9. canvas 模拟时钟

    <meta charset="utf-8"> <canvas width="1000" height="1000" id= ...

随机推荐

  1. Linux下用ImageMagick玩图像魔术【转】

    本文转载自:http://www.linuxdiyf.com/linux/11680.html 不管你知不知道,现在是一个用ImageMagick的好机会,至少,如果你是一个Linux用户的话.这是一 ...

  2. svn代码回滚命令【转】

    本文转载自:http://www.cnblogs.com/jndream/archive/2012/03/20/2407955.html 取消对代码的修改分为两种情况:   第一种情况:改动没有被提交 ...

  3. Android+Jquery Mobile学习系列(1)-开发环境

    开发环境是老生常谈的问题了,网上有很多关于Android环境安装的文章,我这里也就简单说明一下,不做过多分析. 想了解详细的安装说明,可以参见[百度经验] Java环境安装直接跳过,说一下Androi ...

  4. 框架-Eureka:初识 Eureka

    ylbtech-框架-Eureka:初识 Eureka 1.返回顶部 1. 1.1. http://localhost:2100/ 1.2. 2. Eureka - Last N events 3. ...

  5. raspberry-常用命令

    安全关闭raspberry:sudo shutdown -h now 一次升级系统中的所有内容:sudo apt-get update 升级单个软件包:sudo apt-get install *** ...

  6. solaris&nbsp;10&nbsp;关闭ftp、telnet

    安装solaris10,启动后发现找不到ftp.telnet的关闭方法, 管理命令 svcadm(服务状态管理,启动.停止等) # svcs 查看当前所有的服务状态,可以使用|管道符重定向作更个性化的 ...

  7. 使用WebGL + Three.js制作动画场景

    使用WebGL + Three.js制作动画场景 3D图像,技术,打造产品,还有互联网:这些只是我爱好的一小部分. 现在,感谢WebGL的出现-一个新的JavaScriptAPI,它可以在不依赖任何插 ...

  8. Boost锁~临界区保护和临界资源共享

    前言: 除了thread,boost::thread另一个重要组成部分是mutex,以及工作在mutex上的boost::mutex::scoped_lock.condition和barrier,这些 ...

  9. DDoS攻击与防范策略

    DDoS(Distributed Denial of Service,分布式拒绝服务)攻击的主要目的是让指定目标无法提供正常服务,甚至从互联网上消失,是目前最强大.最难防御的攻击之一. 按照发起的方式 ...

  10. 用apt-get install一个软件的时候出现错误: 无法解析或打开软件包的列表或是状态文件

    用apt-get install一个软件的时候出现了一个错误: E: Encountered a section with no Package: header E: Problem with Mer ...