Guest User

Untitled

a guest
Mar 17th, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.95 KB | None | 0 0
  1. import java.util.*;
  2.  
  3. class Main {
  4. public static void main(String[] args) {
  5. Scanner sc = new Scanner(System.in);
  6. int n = sc.nextInt();
  7. int m = sc.nextInt();
  8. int r = sc.nextInt();
  9. int c = sc.nextInt();
  10. int d = sc.nextInt();
  11. int[][] map = new int[n][m];
  12. for (int z = 0; z < n; z++) {
  13. for (int y = 0; y < m; y++) {
  14. map[z][y] = sc.nextInt();
  15. }
  16. }
  17. int count = 0;
  18. one(r, c, d, count, map, n, m);
  19. for (int z = 0; z < n; z++) {
  20. for (int y = 0; y < m; y++) {
  21. if (map[z][y] == 2) {
  22. count++;
  23. }
  24. }
  25. }
  26. System.out.println(count);
  27. sc.close();
  28. }
  29.  
  30. private static void one(int r, int c, int d, int count, int[][] map, int n, int m) {
  31. map[r][c] = 2;
  32. count++;
  33. two(r, c, d, count, map, n, m);
  34. }
  35.  
  36. private static void two(int r, int c, int d, int count, int[][] map, int n, int m) {
  37. if ((c + 1 >= m || map[r][c + 1] != 0) && (r + 1 >= n || map[r + 1][c] != 0)
  38. && (c - 1 < 0 || map[r][c - 1] != 0) && (r - 1 < 0 || map[r - 1][c] != 0)) {
  39. if (d == 0) {
  40. if (r + 1 >= n || map[r + 1][c] == 1) {
  41. return;
  42. } else {
  43. two(r + 1, c, d, count, map, n, m);
  44. }
  45. }
  46. if (d == 1) {
  47. if (c - 1 < 0 || map[r][c - 1] == 1) {
  48. return;
  49. } else {
  50. two(r, c - 1, d, count, map, n, m);
  51. }
  52. }
  53. if (d == 2) {
  54. if (r - 1 < 0 || map[r - 1][c] == 1) {
  55. return;
  56. } else {
  57. two(r - 1, c, d, count, map, n, m);
  58. }
  59. }
  60. if (d == 3) {
  61. if (c + 1 > m || map[r][c + 1] == 1) {
  62. return;
  63. } else {
  64. two(r, c + 1, d, count, map, n, m);
  65. }
  66. }
  67. } else if (d == 0 && c - 1 >= 0 && map[r][c - 1] == 0) {
  68. one(r, c - 1, 3, count, map, n, m);
  69. } else if (d == 1 && r - 1 >= 0 && map[r - 1][c] == 0) {
  70. one(r - 1, c, 0, count, map, n, m);
  71. } else if (d == 2 && c + 1 < m && map[r][c + 1] == 0) {
  72. one(r, c + 1, 1, count, map, n, m);
  73. } else if (d == 3 && r + 1 < n && map[r + 1][c] == 0) {
  74. one(r + 1, c, 2, count, map, n, m);
  75. } else {
  76. two(r, c, (d - 1 + 4) % 4, count, map, n, m);
  77. }
  78. }
  79. }
Add Comment
Please, Sign In to add comment