注意点:这里的关键是一个数组调用的下标嵌套。要理清逻辑
#include<cstdio>
int main(){
const int N=54;
int start[N+1],end[N+1],next[N+1];
int k;
char mp[5]={'S','H','C','D','J'};
scanf("%d",&k);
for(int i=1;i<=N;i++){
start[i]=i; //初始化所有牌的编号
}
for(int i=1;i<=N;i++){
scanf("%d",&next[i]);
}
for(int step=0;step<k;step++){
for(int i=1;i<=N;i++){
end[next[i]]=start[i];
}
for(int i=1;i<=N;i++){
start[i]=end[i];
}
}
for(int i=1;i<=N;i++){
printf("%c%d",mp[(start[i]-1)/13],(start[i]-1)%13+1);
if(i!=N)printf(" ");
}
return 0;
}