1042 Shuffling Machine (20 分)

1042 Shuffling Machine (20 分)

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

题目大意

给54张纸牌,并给出洗牌的顺序,具体地是:将第i个位置的牌移动至第a[i]个位置处,循环times次。

#include <iostream>
#include <vector>
using namespace std;
int a[55];
char tmp[]= {'S','H','C','D','J'};
int main() {
    int times;
    cin>>times;
    vector<string> ans(54),ans1(54);
    for(int i=0;i<54;i++){
        cin>>a[i];
    }
    int index=0;
    for(int i=0; i<4; i++) {
        for(int j=0; j<13; j++) {
            ans[index].push_back(tmp[i]);
            if((j+1)/10!=0) ans[index].push_back((j+1)/10+'0');
            ans[index].push_back((j+1)%10+'0');
            index++;
        }
    }
    ans[index++]="J1";
    ans[index++]="J2";
    for(int i=0;i<times;i++){
        for(int j=0;j<54;j++){
            ans1[a[j]-1]=ans[j];
        }
        ans=ans1;
    }
    for(int i=0;i<54;i++){
        if(i==0) cout<<ans1[i];
        else cout<<" "<<ans1[i];
    }
    return 0;
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi阅读 7,448评论 0 10
  • 今天走在街上,偶然遇到了卖柑橘的小摊贩,大概有两篓,似乎是两种不同类型的。就柑橘表面来说,看起来并没有什么差别,...
    piop阅读 177评论 0 0
  • 打开皮箱,映入米小阳眼里的都是那些红色绿色的,大学里的各类证书。因为存放在皮箱里,所以没有被时间染上灰尘,反倒新的...
    Cony蕉棠阅读 261评论 0 0
  • 招了小人是真没招,半夜噩梦说电动车丢了吓醒凌晨4点半,看了看运势。5点半又睡着又噩梦还是电动车丢了。醒来告诉郑夫君...
    有爱思雨阅读 193评论 0 0
  • 当我看着餐桌满鱼肉的一刻 我想着她 逝去的老姆 她何曾吃过这样的美味? 今天她受到跪拜 她受到如此尊重的时刻 却是...
    小草_d5ad阅读 448评论 13 19