基本流程:
1.记录转换信息,注意类似于打表的问题;
2.记录字符和预处理可以采用取模计算,这个之前没怎么接触过;
注意点:
连续读入可以用scanf,其可以自己按照空格分隔,没必要while(cin>>);
1 #include<iostream> 2 #include<stdlib.h> 3 #include<stdio.h> 4 #include<vector> 5 #include<string> 6 #include<math.h> 7 #include<algorithm> 8 using namespace std; 9 using std::vector; 10 const int N = 54; 11 char mp[5] = { 'S','H','C','D','J' }; 12 int start[N + 1], ed[N + 1], net[N + 1]; 13 14 int main() { 15 int k; 16 scanf("%d", &k); 17 for (int i = 1; i <= N; i++) { 18 start[i] = i; 19 } 20 for (int i = 1; i <= N; i++) { 21 scanf("%d", &net[i]); 22 } 23 for (int i = 0; i < k; i++) { 24 for (int j = 1; j <= N; j++) { 25 ed[net[j]] = start[j]; 26 } 27 for (int j = 1; j <= N; j++) { 28 start[j] = ed[j]; 29 } 30 } 31 for (int i = 1; i <= N; i++) { 32 if (i != 1) 33 printf(" "); 34 start[i]--; 35 printf("%c%d", mp[start[i] / 13], start[i] % 13 + 1); 36 } 37 system("pause"); 38 return 0; 39 }