思路:
设置start[55],end[55]两个数组,每一变化以后,end 覆盖start 然后循环。Sx,Dx、Hx、Cx、Jx等等可以依照次序来获得,没必要原样创建55个,直接改变,这样需要用到strcpy。注意次序和编码的关系。
#include <cstdio>
#include <cstring>
int main(){
char mp[5] = {'S','H','C','D','J'};
int start[55], end[55], k, change[55];
for (int i=1; i<=54; i++){
start[i] = i;
}
scanf("%d",&k);
for (int i=1;i<=54;i++){
scanf("%d",&change[i]);
}
for (int step=0; step<k; step++){
for (int i=1; i<=54; i++){
end[change[i]] = start[i];
}
for (int i=1; i<=54; i++){
start[i] = end[i];
}
}
for (int j=1; j<=54; j++){
if (j!=1) printf(" ");
start[j]--;
printf("%c%d",mp[start[j]/13],start[j]%13+1);
}
return 0;
}