这题做的有点麻烦,因为脑子一直抽风,整体思路是直接开了个结构体存洗牌顺序,然后直接快排n次输出就好了,很简单的一道题目脑子卡住好几次.
#include <iostream>
#include <string>
#include <cstring>
#include<algorithm>
#include<cmath>
#include <vector>
#include <map>
#include <stdio.h>
using namespace std;
#define MAX 55
#define INF 0x3f3f3f3f
struct CARD {
string card;
int pos;
}c[55];
bool cmp(CARD a, CARD b) {
return a.pos < b.pos;
}
int main() {
int n,i,j,p[55];
string card[MAX] = {"","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"};
scanf("%d", &n);
for (i = 1; i < 55; i++) {
c[i].card = card[i];
}
for (i = 1; i < 55; i++) {
scanf("%d", &p[i]);
}
for (i = 0; i < n; i++) {
for (j = 1; j < 55; j++) {
c[j].pos = p[j];
}
sort(c + 1, c + 55, cmp);
}
cout << c[1].card;
for (i = 2; i < 55; i++) {
cout << " " << c[i].card;
}
return 0;
}