Advertisement
Guest User

Untitled

a guest
Apr 23rd, 2017
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.91 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. const int MAX_SIZE = 20;
  5.  
  6. int getHeadRow(int N, int M, char arr[MAX_SIZE][MAX_SIZE])
  7. {
  8. int row = 0;
  9. for (int i = 0;i < N;i++)
  10. {
  11. for (int j = 0; j < M; j++)
  12. {
  13. if (arr[i][j] == 'A')
  14. {
  15. row = i;
  16. }
  17. }
  18. }
  19. return row;
  20. }
  21.  
  22. int getHeadCol(int N, int M, char arr[MAX_SIZE][MAX_SIZE])
  23. {
  24. int col = 0;
  25. for (int i = 0;i < N;i++)
  26. {
  27. for (int j = 0; j < M; j++)
  28. {
  29. if (arr[i][j] == 'A')
  30. {
  31. col = j;
  32. }
  33. }
  34. }
  35. return col;
  36. }
  37.  
  38. int getFoodRow(int N, int M, char arr[MAX_SIZE][MAX_SIZE])
  39. {
  40. int row = 0;
  41. for (int i = 0;i < N;i++)
  42. {
  43. for (int j = 0; j < M; j++)
  44. {
  45. if (arr[i][j] == '@')
  46. {
  47. row = i;
  48. }
  49. }
  50. }
  51. return row;
  52. }
  53.  
  54. int getFoodCol(int N, int M, char arr[MAX_SIZE][MAX_SIZE])
  55. {
  56. int col = 0;
  57. for (int i = 0;i < N;i++)
  58. {
  59. for (int j = 0; j < M; j++)
  60. {
  61. if (arr[i][j] == '@')
  62. {
  63. col = j;
  64. }
  65. }
  66. }
  67. return col;
  68. }
  69.  
  70.  
  71. bool isValidUp(int n, int m,char arr[MAX_SIZE][MAX_SIZE])
  72. {
  73. for (char i = 'a';i < 'k';i++)
  74. {
  75. for (char j = 'B'; j < 'K'; j++)
  76. {
  77. if (arr[n - 1][m] == i || arr[n - 1][m] == j)
  78. return false;
  79. }
  80. }
  81. return true;
  82. }
  83.  
  84. bool isValidDown(int n, int m, char arr[MAX_SIZE][MAX_SIZE])
  85. {
  86. for (char i = 'a';i < 'k';i++)
  87. {
  88. for (char j = 'B'; j < 'K'; j++)
  89. {
  90. if (arr[n + 1][m] == i || arr[n + 1][m] == j)
  91. return false;
  92. }
  93. }
  94. return true;
  95. }
  96.  
  97. bool isValidLeft(int n, int m, char arr[MAX_SIZE][MAX_SIZE])
  98. {
  99. for (char i = 'a';i < 'k';i++)
  100. {
  101. for (char j = 'B'; j < 'K'; j++)
  102. {
  103. if (arr[n][m-1] == i || arr[n][m-1] == j)
  104. return false;
  105. }
  106. }
  107. return true;
  108. }
  109.  
  110. bool isValidRight(int n, int m, char arr[MAX_SIZE][MAX_SIZE])
  111. {
  112. for (char i = 'a';i < 'k';i++)
  113. {
  114. for (char j = 'B'; j < 'K'; j++)
  115. {
  116. if (arr[n][m + 1] == i || arr[n][m + 1] == j)
  117. return false;
  118. }
  119. }
  120. return true;
  121. }
  122.  
  123.  
  124. int main() {
  125.  
  126. int N, M, K;
  127.  
  128. cin >> N >> M;
  129. cin >> K;
  130.  
  131. char arr[MAX_SIZE][MAX_SIZE];
  132. for (int i = 0;i < N;i++)
  133. {
  134. for (int j = 0; j < M; j++)
  135. {
  136. cin >> arr[i][j];
  137. }
  138. }
  139.  
  140. int headRow = getHeadRow(N, M, arr);
  141. int headCol = getHeadCol(N, M, arr);
  142. int foodRow = getFoodRow(N, M, arr);
  143. int foodCol = getFoodCol(N, M, arr);
  144.  
  145. if (foodRow < headRow)
  146. {
  147. if (!isValidUp(headRow, headCol, arr))
  148. {
  149. if (foodCol > headCol)
  150. {
  151. cout << "Right";
  152. }
  153. else if (foodCol < headCol)
  154. {
  155. cout << "Left";
  156. }
  157. else cout << "Down";
  158. }
  159. else cout << "Up";
  160. }
  161. else if (foodRow > headRow)
  162. {
  163. if (!isValidDown(headRow, headCol, arr))
  164. {
  165. if (foodCol > headCol)
  166. {
  167. cout << "Right";
  168. }
  169. else if (foodCol < headCol)
  170. {
  171. cout << "Left";
  172. }
  173. else cout << "Up";
  174. }
  175. else cout << "Down";
  176. }
  177. else
  178. {
  179. if (foodCol > headCol)
  180. {
  181. cout << "Right";
  182. }
  183.  
  184. else if (foodCol < headCol)
  185. {
  186. cout << "Left";
  187. }
  188. }
  189.  
  190.  
  191. return 0;
  192. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement