#include<cstdio>
int main()
{
int cnt;
scanf("%d",&cnt);
int start[55],end[55],scan[55];
for(int i=1;i<55;i++)
{
scanf("%d",&scan[i]);
end[i]=i;
}
for(int i=0;i<cnt;i++)
{
for(int j=1;j<55;j++) start[j]=end[j];
for(int k=1;k<55;k++) end[scan[k]]=start[k];
}
char c[6]={"SHCDJ"};
for(int i=1;i<55;i++)
{
end[i] = end[i] - 1;
printf("%c%d", c[end[i]/13], end[i]%13+1);
if(i != 54) printf(" ");
}
return 0;
}
注意点:
1.内部每循环一次必须用end的值对start实现覆盖
2.牌的初始化 end[i]=i;
3.最重要公式:
end[scan[k]]=start[k];
实现跳转功能,相当于根据scan的值,将start中的值跳到end中的某个地方
4,数字是从1编号,而数组是从0开始,所以减1不能漏。