Ю2.26

Задача. На шахматной доске стоят три ферзя (ферзь бьет по вертикали, горизонтали и диагоналям). Найти те пары из них, которые угрожают друг другу.

[latex]x_{1}[/latex] [latex]y_{1}[/latex] [latex]x_{2}[/latex] [latex]y_{2}[/latex] [latex]x_{3}[/latex] [latex]y_{3}[/latex] Результаты Комментарий
6 8 3 5 6 3 Пара ферзей 1 и 2 угрожают друг другу

Пара ферзей 1 и 3 угрожают друг другу

Пройден
1 5 6 8 7 3 Никто никому не угрожает Пройден
3 3 8 8 7 1 Пара ферзей 1 и 2 угрожают друг другу Пройден
2 8 4 7 7 4 Пара ферзей 2 и 3 угрожают друг другу Пройден

 Тесты:

Код на С

Код на Java

 

Решение:

В случае если фигуры стоят на одной вертикали или горизонтали соответствующие координаты будут равны. Таким образом, проверяя на равенство координаты, узнаем о существовании угрозы. В случае если фигуры стоят на одной диагонали можно заметить, что [latex] \left|x_{1}-x_{2 }\right|=\left|y_{1}-y_{2} \right|[/latex]. Таким образом, проверив и это условие, точно определим есть угроза или нет.

Также надо отметить тот случай, когда не существует никакой угрозы . Для этого введем счетчик [latex]k[/latex]. Если между какой-либо парой фигур есть угроза, то [latex]k[/latex] увеличивается на единицу. Если после проверки вышеупомянутых условий [latex]k[/latex] остается равным нулю, то делаем вывод, что никто никому не угрожает.

 

 

Related Images:

3 thoughts on “Ю2.26

  1. «Пара ферзей 1 и 2 угрожают друг другуПара ферзей 1 и 3 угрожают друг другу» в результатах забыли перевести строчку (в коде все в порядке).

    «В случае если фигуры стоят на одной диагонали можно заметить, что» в переменных x1, x2, y1, y2 цифры не являются индексами.

    Оператор « if (k==0)» имеет почему-то чуть больший отступ.

Добавить комментарий