Задача
Для клетки с координатами $\left(x, y\right)$ в таблице размером $M\times N$ выведите координаты ее соседей. Соседними называются клетки, имеющие общую сторону.
Входные данные
Даны натуральные числа $M, N, x, y \left(1 \leqslant x \leqslant M \leqslant 109, 1 \leqslant y \leqslant N \leqslant 109\right).$
Выходные данные
В выходной файл выведите пары координат соседей этой клетки в произвольном порядке.
Тесты
Входные данные | Выходные данные |
---|---|
3 3 2 2 |
1 2 2 1 2 3 3 2 |
23 23 21 13 |
20 13 22 13 21 12 21 14 |
11 8 10 5 |
9 5 11 5 10 4 10 6 |
Код решения
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
import java.util.*; import java.lang.*; import java.io.*; class Main { public static void main (String[] args) throws java.lang.Exception { Scanner in = new Scanner(System.in); int n = in.nextInt(); int m = in.nextInt(); int x = in.nextInt(); int y = in.nextInt(); if (x > 1) System.out.print((x-1)+" "+y+"\n"); if (x 1) System.out.print(x+" "+(y-1)+"\n"); if (y < m) System.out.print(x+" "+(y+1)+"\n"); } } |
Решение
Для решения этой задачи стоит просмотреть все варианты координат соседних точек. То есть, нужно прибавить единицу к абсциссам и ординатам заданной точки. Но стоит учесть, что таблица у нас ограничена: $1 \leqslant x \leqslant M, 1 \leqslant y \leqslant N$