解法一:模拟

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. const int N = 54;
  4. string cardsA[N + 1];
  5. string cardsB[N + 1];
  6. int pos[N + 1];
  7. int main() {
  8. ios::sync_with_stdio(false);
  9. cin.tie(0);
  10. for (int i = 1; i <= N; ++i) {
  11. int tmp = (i - 1) / 13;
  12. switch (tmp) {
  13. case 0:
  14. cardsA[i] = "S" + to_string(i);
  15. break;
  16. case 1:
  17. cardsA[i] = "H" + to_string(i - 13);
  18. break;
  19. case 2:
  20. cardsA[i] = "C" + to_string(i - 26);
  21. break;
  22. case 3:
  23. cardsA[i] = "D" + to_string(i - 39);
  24. break;
  25. case 4:
  26. cardsA[i] = "J" + to_string(i - 52);
  27. }
  28. }
  29. int K;
  30. cin >> K;
  31. for (int i = 1; i <= N; ++i) {
  32. cin >> pos[i];
  33. }
  34. while (K-- > 0) {
  35. for (int i = 1; i <= N; ++i) {
  36. cardsB[pos[i]] = cardsA[i];
  37. }
  38. for (int i = 1; i <= N; ++i) {
  39. cardsA[i] = cardsB[i];
  40. }
  41. }
  42. cout << cardsA[1];
  43. for (int i = 2; i <= N; ++i) {
  44. cout << " " << cardsA[i];
  45. }
  46. cout << "\n";
  47. }