Note 简单模拟建立卡牌顺序数组 Code: #include<bits/stdc++.h> using namespace std; int main(){ #ifndef ONLINE_JUDGE freopen("data.txt","r",stdin); #endif int n; char letter[5]={'S','H','C','D','J'}; int num[55]={0}; int tmp[55]={0}; int order[55]={0}; scanf("%d",&n); for(int i=1;i<55;i++){ scanf("%d",&num[i]); order[i]=i; } while(n--){ for(int i=1;i<55;i++){ tmp[num[i]]=order[i]; } for(int i=1;i<55;i++){ order[i]=tmp[i]; } } int nums,letters; for(int i=1;i<55;i++){ if(i!=1) printf(" "); nums=tmp[i]%13; letters=tmp[i]/13; if(nums==0){ nums=13; letters--; } printf("%c%d",letter[letters],nums); } return 0; }