题意
PAT A1042 Shuffling Machine (20 分)
题目给出洗牌次数和洗牌顺序,输出洗牌后的整副扑克
注意点
- 直接利用洗牌顺序访问数组中对应下标的扑克存到结果里,得到一次洗牌后的数组,再赋值给原数组,继续执行
题解
#include <stdio.h>
int main(void)
{
int n;
scanf("%d", &n);
int order[60]={0};
int start[60]={0};
int result[60]={0};
char mp[5]={'S','H','C','D','J'};
for (int i=1;i<=54;i++) {//输入排序方式
scanf("%d", &order[i]);
}
for (int i=1;i<=54;i++) {//开始时按1~54排好
start[i]=i;
}
for (int i=0;i<n;i++) {
for (int j=1;j<=54;j++) {
result[order[j]]=start[j];//result的第order[i]个填入start[i]
}
for (int i=1;i<=54;i++) {
start[i]=result[i];
}
}
for (int i=1;i<=54;i++) {
printf("%c%d", mp[(result[i]-1)/13], (result[i]-1)%13+1);
if (i<=53) printf(" ");
}
printf("\n");
return 0;
}