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

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

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

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

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

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

  1. #include <algorithm>
  2. #include <iostream>
  3. #include <stack>
  4.  
  5. using namespace std;
  6.  
  7. char Maps[] = "A23456789TJQK";
  8.  
  9. typedef struct _pnode
  10. {
  11. int value;
  12. char color;
  13. _pnode(int v, char c) {value = v; color = c;}
  14. _pnode(){}
  15. }pnode;
  16. pnode cards[54];
  17.  
  18. int value(char ch)
  19. {
  20. if (ch >= '2' && ch <= '9')
  21. return ch-'1';
  22. if (ch == 'A') return 0;
  23. if (ch == 'T') return 9;
  24. if (ch == 'J') return 10;
  25. if (ch == 'Q') return 11;
  26. if (ch == 'K') return 12;
  27. }
  28.  
  29. int main()
  30. {
  31. char V,C;
  32. while (cin >> V && V != '#') {
  33. cin >> C;
  34. stack<pnode> Q[13];
  35. cards[0] = pnode(value(V), C);
  36. for (int i = 1; i < 52; ++ i) {
  37. cin >> V >> C;
  38. cards[i] = pnode(value(V), C);
  39. }
  40. for (int i = 51; i >= 0; -- i)
  41. Q[12-i%13].push(cards[i]);
  42.  
  43. int count = 0, index = 12;
  44. pnode now;
  45. while (!Q[index].empty()) {
  46. now = Q[index].top();
  47. Q[index].pop();
  48. index = now.value;
  49. ++ count;
  50. }
  51.  
  52. if (count < 10) cout << "0";
  53. cout << count << "," << Maps[now.value] << now.color << endl;
  54. }
  55. return 0;
  56. }

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. 院校-国外-美国:斯坦福大学( Stanford)

    ylbtech-院校-国外-美国:斯坦福大学( Stanford) 斯坦福大学(Stanford University),全名小利兰·斯坦福大学(Leland Stanford Junior Univ ...

  2. Spring《八》AOP/代理类定义

    Spring通知 Interception Around通知 MethodInterceptor类(方法执行前后通知) Before通知 MethodBeforeAdvice类(方法执行前通知) Af ...

  3. Prism学习(1)---前期准备

    本文摘取自Gene's Blog的博客园文章,版权归Gene's Blog,仅供个人学习参考.转载请标明原作者Gene's Blog. 在学习Prism框架之前,我预先写了一个非常简单的计算器解决方案 ...

  4. js两个页面之间URL传递参数中文乱码

  5. JavaScript实现数字时钟功能

    <html> <head> <meta charset="utf-8"> <title>无标题文档</title> &l ...

  6. adb 通过 WiFi 连接 Android 设备

    PC 和 Android 设备连接在同一个局域网. 查看 Android 设备的 IP:设置 > WLAN > 选择连接的WiFi > 查看IP地址. PC 端执行: ping &l ...

  7. 关于H5移动端开发 iPhone X适配

    一. 媒体查询. @media screen and (device-width:375px) and (device-height:812px){ #header { height: 88px; p ...

  8. SQL数据库链接代码的解释

    SqlConnection conn = new SqlConnection(); conn.ConnectionString = "Data Source=(local);Initial ...

  9. MySQL结构相关

    MySQL 由以下几部分组成: 1.Connectors指的是不同语言中与SQL的交互 2.Management Serveices & Utilities: 系统管理和控制工具 3.Conn ...

  10. SSM 拦截器验证权限和登录与注销的实现

    拦截器的作用在于,比如我们输入 xxx.com/admin 发起请求进入 网站后台或者其他后台页面.我们的拦截器会在 Controller  调用之前进行拦截,至于什么拦截,由我们来写.比如,判断用户 ...