1042. Shuffling Machine (20)

时间限制
400 ms

内存限制
65536 kB

代码长度限制
16000 B

判题程序
Standard

作者
CHEN, Yue

Shuffling is a procedure used to randomize a deck of playing cards. Because standard shuffling techniques are seen as weak, and in order to avoid "inside jobs" where employees collaborate with gamblers by performing inadequate shuffles, many casinos employ automatic shuffling machines. Your task is to simulate a shuffling machine.

The machine shuffles a deck of 54 cards according to a given random order and repeats for a given number of times. It is assumed that the initial status of a card deck is in the following order:

S1, S2, ..., S13, H1, H2, ..., H13, C1, C2, ..., C13, D1, D2, ..., D13, J1, J2

where "S" stands for "Spade", "H" for "Heart", "C" for "Club", "D" for "Diamond", and "J" for "Joker". A given order is a permutation of distinct integers in [1, 54]. If the number at the i-th position is j, it means to move the card from position i to position j. For example, suppose we only have 5 cards: S3, H5, C1, D13 and J2. Given a shuffling order {4, 2, 5, 3, 1}, the result will be: J2, H5, D13, S3, C1. If we are to repeat the shuffling again, the result will be: C1, H5, S3, J2, D13.

Input Specification:

Each input file contains one test case. For each case, the first line contains a positive integer K (<= 20) which is the number of repeat times. Then the next line contains the given order. All the numbers in a line are separated by a space.

Output Specification:

For each test case, print the shuffling results in one line. All the cards are separated by a space, and there must be no extra space at the end of the line.

Sample Input:

2
36 52 37 38 3 39 40 53 54 41 11 12 13 42 43 44 2 4 23 24 25 26 27 6 7 8 48 49 50 51 9 10 14 15 16 5 17 18 19 1 20 21 22 28 29 30 31 32 33 34 35 45 46 47

Sample Output:

S7 C11 C10 C12 S1 H7 H8 H9 D8 D9 S11 S12 S13 D10 D11 D12 S3 S4 S6 S10 H1 H2 C13 D2 D3 D4 H6 H3 D13 J1 J2 C1 C2 C3 C4 D1 S5 H5 H11 H12 C6 C7 C8 C9 S2 S8 S9 H10 D5 D6 D7 H4 H13 C5

提交代码

解析: 题目中已经给出数组下标和值的一一影射关系,只需要运用HASH思想,将值作为下标,将下标作为i值进行转换存储,接下来就简单了,本题初看很难,其实多想几遍,发现其原理很简单。

/*************************************************************************> File Name: 1042.c> Author: YueBo> Mail: yuebowhu@163.com> Created Time: Tue 16 May 2017 09:34:04 PM CST************************************************************************/#include <stdio.h>
#include <string.h>struct node
{char elem[8];
};int main()
{int K, i, j, val_tmp;int position[55];struct node cards[55], cards_tmp[55];scanf("%d", &K);for (i = 1; i <= 54; i++){scanf("%d", &val_tmp);position[val_tmp] = i;}for (i = 1; i <= 13; i++){sprintf(cards[i].elem, "S%d", i);sprintf(cards[13+i].elem, "H%d", i);sprintf(cards[13+13+i].elem, "C%d", i);sprintf(cards[13+13+13+i].elem, "D%d", i);}sprintf(cards[13*4+1].elem, "J1");sprintf(cards[13*4+2].elem, "J2");for (i = 1; i <= 54; i++)strcpy(cards_tmp[i].elem, cards[i].elem);for (j = 0; j < K; j++){for (i = 1; i <= 54; i++)strcpy(cards[i].elem, cards_tmp[position[i]].elem);for (i = 1; i <= 54; i++)strcpy(cards_tmp[i].elem, cards[i].elem);}for (i = 1; i <= 54; i++){printf("%s", cards[i].elem);if (i != 54)printf(" ");}printf("\n");return 0;
}

1042. Shuffling Machine (20)相关推荐

  1. 1042 Shuffling Machine (20 point(s)) - C语言 PAT 甲级

    1042 Shuffling Machine (20 point(s)) Shuffling is a procedure used to randomize a deck of playing ca ...

  2. 【题意分析】1042 Shuffling Machine (20 分)

    立志用最少的代码做最高效的表达 PAT甲级最优题解-->传送门 Shuffling is a procedure used to randomize a deck of playing card ...

  3. 1042. Shuffling Machine (20)-PAT甲级真题

    Shuffling is a procedure used to randomize a deck of playing cards. Because standard shuffling techn ...

  4. PAT:1042. Shuffling Machine (20) AC

    #include<stdio.h> #include<stdlib.h> const int N=54; int main() { char mp[5]={'S','H','C ...

  5. PAT甲级1042 Shuffling Machine:[C++题解]模拟、哈希表、洗牌机

    文章目录 题目分析 题目来源 题目分析 来源:acwing 分析:序列置换. 这里用到函数memcpy()用于数组复制,用法memcpy(dest, src, sizeof dest); 把src数组 ...

  6. pat00-自测5. Shuffling Machine (20)

    00-自测5. Shuffling Machine (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue Sh ...

  7. Shuffling Machine (20)

    Shuffling Machine (20) 时间限制 1000 ms 内存限制 65536 KB 代码长度限制 100 KB 判断程序 Standard (来自 小小) 题目描述 Shuffling ...

  8. 7-5 Shuffling Machine (20分)

    Shuffling洗牌 is a procedure程序 used to randomize随机化 a deck of一副playing cards扑克牌. Because standard标准 sh ...

  9. 1042 Shuffling Machine(简单题,用副本记录每次洗牌结果)

    目录 题目 测试样例 输入样例 输出样例 提交结果截图 带详细注释的源代码 题目 题目链接: 1042 Shuffling Machinehttps://pintia.cn/problem-sets/ ...

最新文章

  1. 去除右键的一键备份到115网盘”
  2. oracle中把函数的执行权限赋个某个用户
  3. WriteFile写磁盘扇区是87错误的原因
  4. web前端工作笔记008---js延迟执行代码
  5. linux之同时监控多个日志文件变化
  6. 计算机英语基础课程论文,计算机专业英语结课论文.doc
  7. 操作系统—内存的基础知识
  8. Docker国内Yum源和国内镜像仓库
  9. 各种开源协议介绍 BSD、Apache Licence、GPLv2 、v3 、LGPL、MIT
  10. 质因数分解 2012年NOIP全国联赛普及组
  11. 您应该购买卡巴斯基安全产品吗
  12. php 跨域 json,php跨域调用json的例子
  13. ClearCase截取
  14. java计算机毕业设计BS用户小票系统MyBatis+系统+LW文档+源码+调试部署
  15. cei()、linspace()、arrange()、full()、eye()、empty()、random()
  16. php收藏影视,十个值得收藏的影视资源网站
  17. 网站制作的流程是什么?网站制作的流程包括哪些步骤?
  18. 微信又因夜间模式上热搜,我们又成为了谣言的传播者
  19. iOS基础-高级进阶面试题
  20. 都快2021年了,居然还有人不会MECE

热门文章

  1. 第一百一十七期:爱上 Go 语言的10个理由
  2. 实例55:python
  3. STM32 设置片外SRAM分散加载
  4. Qt 实现QT控件中的QLabel显示图片并自适应显示
  5. 上交大计算机复试机师难不难,本科复旦,考研上海交大复试第一,我感觉难度并不大...
  6. linux进程和计划任务,linux进程和计划任务
  7. java jsonobject_Java实现QQ登录
  8. PL/SQL中模拟EBS上下文
  9. Python贪婪算法
  10. echarts地图的基本使用配置