⬆︎
×

[PAT-A] 1042 Shuffling Machine

Hyplus目录

Java

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.Arrays;

public class Main {
    private static final int N = 60;  // 常量N,数组长度

    // 打印洗牌后的牌
    private static void print(int x) {
        if (x <= 13) System.out.print("S" + x);
        else if (x <= 26) System.out.print("H" + (x - 13));
        else if (x <= 39) System.out.print("C" + (x - 26));
        else if (x <= 52) System.out.print("D" + (x - 39));
        else System.out.print("J" + (x - 52));
    }

    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        int k = Integer.parseInt(reader.readLine().trim());  // 读取洗牌次数

        int[] q = new int[N];
        int[] p = new int[N];
        int[] w = new int[N];

        // 读取洗牌位置
        String[] positions = reader.readLine().trim().split("\\s+");
        for (int i = 1; i <= 54; i++) {
            q[i] = Integer.parseInt(positions[i - 1]);
        }

        // 初始化牌的位置
        for (int i = 1; i <= 54; i++) {
            p[i] = i;
        }

        // 进行洗牌
        while (k-- > 0) {
            System.arraycopy(p, 0, w, 0, N);
            for (int i = 1; i <= 54; i++) {
                p[q[i]] = w[i];
            }
        }

        // 输出洗牌后的结果
        for (int i = 1; i <= 54; i++) {
            print(p[i]);
            if (i != 54) System.out.print(" ");
        }
    }
}

C++

#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;

const int N = 60;

int k;
int q[N], p[N], w[N];

void print(int x) {
    if (x <= 13) cout << 'S' << x;
    else if (x <= 26) cout << 'H' << x - 13;
    else if (x <= 39) cout << 'C' << x - 26;
    else if (x <= 52) cout << 'D' << x - 39;
    else cout << 'J' << x - 52;
}

int main() {
    cin >> k;
    for (int i = 1; i <= 54; i++) cin >> q[i];
    for (int i = 1; i <= 54; i++) p[i] = i;

    while (k--) {
        memcpy(w, p, sizeof w);
        for (int i = 1; i <= 54; i++) p[q[i]] = w[i];
    }

    for (int i = 1; i <= 54; i++) {
        print(p[i]);
        if (i != 54) cout << ' ';
    }

    return 0;
}

发表评论