fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define ll long long
  4. #define pb push_back
  5. #define mp make_pair
  6. #define waduh int
  7. #define mogaAc ios_base::sync_with_stdio(false);
  8. #define fi first
  9. // arrayy------------------------------------------------------
  10. // buat ngecek array 1 apakah sama dengan array 2:
  11. // bool sama = equal(arr, arr + size, arr1);
  12. // buat ngecek besar dari array:
  13. // int size = sizeof(arr) / sizeof(arr[0]);
  14. // indexke LowerBound/upperbound
  15. // auto it = upper_bound(arr.begin(), arr.end(), x);
  16. // int index = distance(arr.begin(), it);
  17. // cara cepet buat sorting-------------------------------------
  18. // dari kecil ke besar : sort(arr.begin(), arr.end());
  19. // dari besar ke kecil : sort(arr.begin(), arr.end(), greater<int>());
  20. // logaritma
  21. // anggap a=base, b=yang ingin di log, seperti logA (B)
  22. // rumus : log(b)/log(a)
  23. // Statitiska
  24. // menghitung rata rata data tambahan baru
  25. // R0 * (S0/S1) + (Data baru)/S1
  26. // R = Rata rata
  27. // S = Banyak data
  28. // 0 = yang lama
  29. // 1 = yang baru
  30. char arr[3][3];
  31. bool visited[3][3];
  32. int terkecil = INT_MAX;
  33. string output;
  34. int lexi(string a)
  35. {
  36. return a[0] * 100 + a[1] * 10 + a[2];
  37. }
  38. void visit(int i, int j, int k, string a)
  39. {
  40. if ((i < 0 || i > 2) || (j < 0 || j > 2) || visited[i][j])
  41. {
  42. return;
  43. }
  44. else
  45. {
  46. visited[i][j] = true;
  47. if (k == 3)
  48. {
  49. int cadangan = lexi(a);
  50. if (cadangan < terkecil)
  51. {
  52. terkecil = cadangan;
  53. output = a;
  54. }
  55. visited[i][j] = false;
  56. return;
  57. }
  58. a += arr[i][j];
  59. k++;
  60. visit(i - 1, j, k, a);
  61. visit(i, j - 1, k, a);
  62. visit(i + 1, j, k, a);
  63. visit(i, j + 1, k, a);
  64. visit(i - 1, j - 1, k, a);
  65. visit(i + 1, j - 1, k, a);
  66. visit(i - 1, j + 1, k, a);
  67. visit(i + 1, j + 1, k, a);
  68. visited[i][j] = false;
  69. }
  70. }
  71. int main()
  72. {
  73. mogaAc;
  74. cin.tie(NULL);
  75. cout.tie(NULL);
  76.  
  77. for (int i = 0; i < 3; i++)
  78. {
  79. for (int j = 0; j < 3; j++)
  80. {
  81. cin >> arr[i][j];
  82. visited[i][j] = false;
  83. }
  84. }
  85. string apacoba;
  86. for (int i = 0; i < 3; i++)
  87. {
  88. for (int j = 0; j < 3; j++)
  89. {
  90. visit(i, j, 0, apacoba);
  91. }
  92. }
  93. cout << output << endl;
  94. return 0;
  95. }
Success #stdin #stdout 0.01s 5272KB
stdin
BCB
CAC
BCB
stdout
ABC