PAT甲级——1042 Shuffling Machine——分数 20

题目

模拟洗牌


解法1

点击查看代码
#include<iostream>
#include<vector>
#include<unordered_map>
using namespace std;

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

int main(){
    int K; scanf("%d",&K);
    
    vector<int> ods(54,0);
    for(int i=0;i<54;i++) {
        cin>>ods[i];
    }
    
     // 洗牌K次
    for (int k = 0; k < K; ++k) {
        vector<string> temp(54);
        for (int i = 0; i < 54; ++i) {
            temp[ods[i] - 1] = cards[i]; // 注意顺序是从1开始的
        }
        cards = temp;
    }
    // 输出结果
    for (int i = 0; i < 54; ++i) {
        if (i != 0) cout << " ";
        cout << cards[i];
    }
    return 0;
}

posted on 2025-04-23 10:42  LEESOL-cn  阅读(13)  评论(0)    收藏  举报

导航