题目描述

题意
一副54张的扑克牌,按要求进行多次移动,输出最后的结果
分析
用两个数组存放操作前的排序和操作后的排序,每次操作完后把操作后的排序数组赋值给操作前的排序的数组即可
输出的时候需要输出花色,注意花色和数字的关系
#include<cstdio>
char mp[5]={'S','H','C','D','J'};
int start[55],end[55],next[55];
int main(){
int k;
scanf("%d",&k);
for(int i=1;i<=54;i++)
start[i]=i;
for(int i=1;i<=54;i++)
scanf("%d",&next[i]);
for(int step=0;step<k;step++)
{
for(int i=1;i<=54;i++){
end[next[i]]=start[i];
}
for(int i=1;i<=54;i++){
start[i]=end[i];
}
}
for(int i=1;i<=54;i++){
if(i!=1) printf(" ");
start[i]--;
printf("%c%d",mp[start[i]/13],start[i]%13+1);
}
}
本文介绍了一个基于扑克牌排序的问题解决算法。通过使用两个数组分别记录操作前后的牌序,并通过循环迭代实现特定次数的移动操作,最终输出经过指定步数移动后牌的顺序。文章包含完整的C++代码实现。
386

被折叠的 条评论
为什么被折叠?



