题目链接:https://www.patest.cn/contests/pat-a-practise/1042
题目思路:
一组字符串(扑克牌)为:S1, S2, …, S13, H1, H2, …, H13, C1, C2, …, C13, D1, D2, …, D13, J1, J2。按照输入的数字来进行交换位置。输入的数字为1-54的乱序,将其存入index[]数组。交换规则是:将第i个位置的扑克牌交换到index[i]处去。并以此输入交换k次,输出交换后的扑克牌的序列。
#include <iostream>
#include <cstring>
using namespace std;
int main(){
int k;
cin>>k;
char c[6]="SHCDJ";
char en[55];
int num[55];
for(int i=0;i<54;i++){
en[i]=c[i/13];
num[i]=i%13+1;
}
int index[55];
for(int i=0;i<54;i++){
cin>>index[i];
}
for(int i=0;i<k;i++){
char tmpen[55];
int tmpnum[55];
for(int j=0;j<54;j++){
tmpen[index[j]-1]=en[j];
tmpnum[index[j]-1]=num[j];
}
for(int j=0;j<54;j++){
en[j]=tmpen[j];
num[j]=tmpnum[j];
}
}
cout<<en[0]<<num[0];
for(int i=1;i<54;i++){
cout<<" "<<en[i]<<num[i];
}
return 0;
}