记录编号 109471 评测结果 AAAAAAA
题目名称 方块转换 最终得分 100
用户昵称 Gravatardevil 是否通过 通过
代码语言 C++ 运行时间 0.005 s
提交时间 2014-07-08 19:53:07 内存使用 0.31 MiB
显示代码纯文本
  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cstring>
  4. #include <cmath>
  5. #include <algorithm>
  6.  
  7. using namespace std;
  8.  
  9. const int MAXN=10+10;
  10.  
  11. char ori[MAXN][MAXN];
  12. char tem[MAXN][MAXN];
  13. char tem1[MAXN][MAXN];
  14. char ans[MAXN][MAXN];
  15. int n;
  16.  
  17. bool turn90()
  18. {
  19. for(int i=0;i<n;i++)
  20. for(int j=0;j<n;j++)
  21. {
  22. int t=n-1;
  23. tem[j][t-i]=ori[i][j];
  24. }
  25. for(int i=0;i<n;i++)
  26. for(int j=0;j<n;j++)
  27. {
  28. if(tem[i][j]!=ans[i][j]) return false;
  29. }
  30. return true;
  31. }
  32.  
  33. bool turn180()
  34. {
  35. for(int i=0;i<n;i++)
  36. for(int j=0;j<n;j++)
  37. {
  38. int t=n-1;
  39. tem[t-i][t-j]=ori[i][j];
  40. }
  41. for(int i=0;i<n;i++)
  42. for(int j=0;j<n;j++)
  43. {
  44. if(tem[i][j]!=ans[i][j]) return false;
  45. }
  46. return true;
  47. }
  48.  
  49. bool turn270()
  50. {
  51. turn90();
  52. for(int i=0;i<n;i++)
  53. for(int j=0;j<n;j++)
  54. {
  55. int t=n-1;
  56. tem1[t-i][t-j]=tem[i][j];
  57. }
  58. for(int i=0;i<n;i++)
  59. for(int j=0;j<n;j++)
  60. {
  61. if(tem1[i][j]!=ans[i][j]) return false;
  62. }
  63. return true;
  64. }
  65.  
  66. bool reflex()
  67. {
  68. for(int i=0;i<n;i++)
  69. for(int j=0;j<n;j++)
  70. {
  71. int t=n-1;
  72. tem[i][t-j]=ori[i][j];
  73. }
  74. for(int i=0;i<n;i++)
  75. for(int j=0;j<n;j++)
  76. {
  77. if(tem[i][j]!=ans[i][j]) return false;
  78. }
  79. return true;
  80. }
  81.  
  82. void asso()
  83. {
  84. for(int i=0;i<n;i++)
  85. for(int j=0;j<n;j++)
  86. {
  87. int t=n-1;
  88. tem[i][t-j]=ori[i][j];
  89. }
  90. for(int i=0;i<n;i++)
  91. for(int j=0;j<n;j++)
  92. ori[i][j]=tem[i][j];
  93. }
  94.  
  95. bool cons()
  96. {
  97. for(int i=0;i<n;i++)
  98. for(int j=0;j<n;j++)
  99. {
  100. if(ori[i][j]!=ans[i][j]) return false;
  101. }
  102. return true;
  103. }
  104.  
  105. int main()
  106. {
  107. freopen("transformations.in","r",stdin);
  108. freopen("transformations.out","w",stdout);
  109. scanf("%d",&n);
  110. for(int i=0;i<n;i++)
  111. scanf("%s",ori[i]);
  112. for(int i=0;i<n;i++)
  113. scanf("%s",ans[i]);
  114. if(turn90()) {printf("1");return 0;}
  115. memset(tem,0,sizeof(tem));
  116. if(turn180()) {printf("2");return 0;}
  117. memset(tem,0,sizeof(tem));
  118. if(turn270()) {printf("3");return 0;}
  119. memset(tem,0,sizeof(tem));
  120. if(reflex()) {printf("4");return 0;}
  121. memset(tem,0,sizeof(tem));
  122. asso();
  123. if(turn90()||turn180()||turn270()) {printf("5");return 0;}
  124. asso();
  125. if(cons()) {printf("6");return 0;}
  126. printf("7");
  127. return 0;
  128. }