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;
}
浙公网安备 33010602011771号