[PAT解题报告] Shuffling Machine

简单题,给定54张牌,每个数代表一张牌,然后有一种操作关系,每次操作告诉你把现在第i张牌放在第j=p[i]个位置,这样不断操作k次,问最终结果。直接模拟即可,注意点主要就是最后要把数字还原成牌的表示。而且k不大,直接循环操作即可。

代码:
#include <cstdio>
#include <string>
#include <cstring>
using namespace std;

const char *c = "SHCD";
char temp[54][4], card[54][4];
int a[54];

int main() {
int n = 0;
    for (int i = 0; i < 4; ++i) {
        for (int j = 0; j < 13; ++j) {
            sprintf(card[n++], "%c%d",c[i],j + 1);
        }
    }
    strcpy(card[52], "J1");
    strcpy(card[53], "J2");
    scanf("%d",&n);
    for (int i = 0; i < 54; ++i) {
        scanf("%d",a + i);
    }
    while (n--) {
        for (int i = 0; i < 54; ++i) {
            strcpy(temp[a[i] - 1], card[i]);
        }
        for (int i = 0; i < 54; ++i) {
            strcpy(card[i], temp[i]);
        }
    }
    for (int i = 0; i < 54; ++i) {
        if (i) {
            putchar(' ');
        }
        printf("%s",card[i]);
    }
    puts("");
    return 0;
}

原题连接: http://www.patest.cn/contests/pat-a-practise/1042
全部评论

相关推荐

点赞 评论 收藏
分享
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务