立志用最少的代码做最高效的表达


PAT甲级最优题解——>传送门


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


题意:第1张-第54张扑克牌的编号分别是S1 S2…S13 H1…H13 C1…C13 D1…D13 J1 J2

输入N,以及54个数,若第i个数为x,则第i个数放到位置x上。将54个数按此规则全部排序,算作一轮。 重复N轮。

举例:样例输入中 第一个数为36,则为将S1放到第36位。 算作一轮。 第二轮同理,36位上的数字为7,因此S1放到第7位。 也就是第七个输出。

算法构造请读者参考代码体会。


代码

#include<bits/stdc++.h>
using namespace std;string s = "0SSSSSSSSSSSSSHHHHHHHHHHHHHCCCCCCCCCCCCCDDDDDDDDDDDDDJJ";
int num[60] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,1,2,3,4,5,6,7,8,9,10,11,12,13,1,2,3,4,5,6,7,8,9,10,11,12,13,1,2,3,4,5,6,7,8,9,10,11,12,13,1,2}; int main() {int N, a[60], b[60];cin >> N;for(int i = 1; i <= 54; i++) cin >> a[i];// unordered_map<int, int>m;multimap<int, int>m;   //排序但不去重,key为1,2,...54   value为对应的牌值for(int i = 1; i <= 54; i++) {b[i] = a[i];                   //a数组为给定的顺序for(int j = 1; j < N; j++) {       //重复N轮b[i] = a[b[i]];}
//      cout << b[i] << ' '; m.insert(pair<int, int>(b[i], i)); //插入值}bool flag = false;for(auto& i : m) {if(!flag) flag = true;else cout << ' ';cout << s[i.second] << num[i.second];}return 0;
}

耗时:


求赞哦~

【题意分析】1042 Shuffling Machine (20 分)相关推荐

  1. 1042. Shuffling Machine (20)

    1042. Shuffling Machine (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue Shu ...

  2. 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 ...

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

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

  4. 7-5 Shuffling Machine (20分)

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

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

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

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

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

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

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

  8. C++学习之路 | PTA乙级—— 1042 字符统计 (20 分)(精简)

    1042 字符统计 (20 分) 请编写程序,找出一段给定文字中出现最频繁的那个英文字母. 输入格式: 输入在一行中给出一个长度不超过 1000 的字符串.字符串由 ASCII 码表中任意可见字符及空 ...

  9. Shuffling Machine (20)

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

最新文章

  1. python统计字符串个数_python字符串中字符出现次数(python获取字符串个数)
  2. python 图表_做自己漂亮的图表,一文学会如何用Python填充图表样式
  3. 免费报名|《PMCAFF产品经理第一课》Facebook、360、京东早期核心产品大牛重磅开讲...
  4. 推进教育人工智能?网易云和网易波特 “四步走”
  5. 玩了十年的射击游戏都是有情怀的,大家都是热爱CFHD的一代
  6. java写入简介_Java关于IO流的介绍
  7. docker 目录 挂载
  8. 面试官:怎么改进哈希算法实现负载均衡的扩展性和容错性?我:...
  9. Java7并发编程指南——第八章:测试并发应用程序
  10. ORA-01747: user.table.column, table.column 或列说明无效
  11. python怎么打开excel文件并处理_Python利用openpyxl处理Excel文件(Excel文件基本操作)...
  12. 2019蓝桥杯A组:数列求值(递推式)
  13. [转载] numpy.ma详解
  14. 怎样清理软件卸载残留文件和系统垃圾
  15. STM8和STM32开发总结
  16. Date的after和before方法
  17. 从word2vec开始,说下GPT庞大的家族系谱
  18. el-table根据数据某个属性不同,做斑马纹,设置表格行样式
  19. Micron内存DDR3型号查询 memory part
  20. Django作业管理系统(1)

热门文章

  1. 白话科普系列——最好用的浏览器 Chrome,你用了么?
  2. 从新冠疫情出发,漫谈 Gossip 协议
  3. 经典永不过时!重温设计模式
  4. 如何构建一套高性能、高可用性、低成本的视频处理系统?
  5. Redis功能强大,那也顶不住被滥用啊!
  6. 大话ion系列(五)
  7. 音视频技术开发周刊 | 194
  8. LiveVideoStackCon2019北京 八月再聚
  9. ffmpeg解封装及解码实战
  10. 智能问答在金融领域中的实践与应用