C/C++
是否可以用两个数组解决这个打散牌序的问题?用了递归,从数组A[55]按T[55]随机规则排序到数组B[55],再将数组B[55]克隆到数组A[55],循环K次。输出时,将原数组数值减一,之后再加一,将13%13=0变成(13-1)%13=12+1=13,控制数值输出。
#include<cstdio>
int main()
{
int A[55]={},B[55]={},T[55]={};
int count=0;
char Le[5]={'S','H','C','D','J'};
scanf("%d",&count);
for(int i=1; i<=54; i++)
{
scanf("%d",&T[i]);
A[i] = i;
}
for(int j=0; j<count; j++)
{
for(int i=1; i<=54; i++)
B[T[i]] = A[i];
for(int i=1; i<=54; i++)
A[i] = B[i];
}
for(int i=1; i<=54; i++)
{
if(i!=1)
printf(" ");
B[i]--;
printf("%c%d",Le[B[i]/13],B[i]%13+1);
}
return 0;
}