1042 Shuffling Machine (20point(s)) Easy only once *输入和字符预处理问题

基本流程:

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 }

猜你喜欢

转载自www.cnblogs.com/songlinxuan/p/12184996.html