• Source
    1. #include <iostream>
    2. #include <vector>
    3. using namespace std;
    4.  
    5. struct data
    6. {
    7. string Bit;
    8. char KH;
    9. };
    10.  
    11. struct vector <data> MH;
    12.  
    13. int n=5;
    14. char arr[8];
    15. int BD=65;
    16. int sinh (int u)
    17. {
    18. if (u==n+1)
    19. {
    20. if (BD>90) return 0;
    21. struct data tg;
    22. string a="";
    23. int kt=0;
    24. for (int i=1; i<=n; i++)
    25. {
    26. a=a+arr[i];
    27. if (arr[i]=='1')
    28. {
    29. kt=1;
    30. }
    31. }
    32. tg.Bit=a;
    33. if (kt==0)
    34. {
    35. tg.KH=' ';
    36. MH.push_back (tg);
    37. }
    38. else
    39. {
    40. tg.KH=BD-0;
    41. MH.push_back (tg);
    42. BD++;
    43. }
    44. }
    45. else
    46. {
    47. for (int i=1; i<=2; i++)
    48. {
    49. if (i==1)
    50. {
    51. arr[u]='0';
    52. sinh (u+1);
    53. }
    54. else
    55. {
    56. arr[u]='1';
    57. sinh (u+1);
    58. }
    59. }
    60. }
    61. }
    62.  
    63. int main ()
    64. {
    65. sinh (1); //Sinh Ma Hoa: BIT va Ki hieu;
    66.  
    67. int t;
    68. cin>>t;
    69. for (int k=1; k<=t; k++)
    70. {
    71. int r, c;
    72. cin>>r>>c;
    73. char Matrix[25][25];
    74. for (int i=1; i<=r; i++)
    75. {
    76. for (int j=1; j<=c; j++)
    77. {
    78. cin>>Matrix[i][j];
    79. }
    80. }
    81. //Doc dang xoay oc
    82. int dem=0;
    83. int hd=1, hc=r;
    84. int cd=1, cc=c;
    85. int ic=hd, jc=cd;
    86. string B="";
    87. while (1)
    88. {
    89. if (dem==r*c) break;
    90. ic=hd;
    91. for (int j=cd; j<=cc; j++)
    92. {
    93. B+=Matrix[ic][j];
    94. dem++;
    95. }
    96. if (dem==r*c) break;
    97. hd++;
    98. jc=cc;
    99. for (int i=hd; i<=hc; i++)
    100. {
    101. B+=Matrix[i][jc];
    102. dem++;
    103. }
    104. if (dem==r*c) break;
    105. cc--;
    106. ic=hc;
    107. for (int j=cc; j>=cd; j--)
    108. {
    109. B+=Matrix[ic][j];
    110. dem++;
    111. }
    112. if (dem==r*c) break;
    113. hc--;
    114. jc=cd;
    115. for (int i=hc; i>=hd; i--)
    116. {
    117. B+=Matrix[i][jc];
    118. dem++;
    119. }
    120. cd++;
    121. }
    122. cout<<k<<" ";
    123. for (int i=0; i<B.length(); i=i+5)
    124. {
    125. string TG="";
    126. for (int j=i; j<i+5; j++) TG+=B[j];
    127. for (int j=0; j<MH.size(); j++)
    128. {
    129. if (TG==MH[j].Bit)
    130. {
    131. cout<<MH[j].KH;
    132. }
    133. }
    134. }
    135. cout<<endl;
    136. }
    137. }