В
Все
М
Математика
А
Английский язык
Х
Химия
Э
Экономика
П
Право
И
Информатика
У
Українська мова
Қ
Қазақ тiлi
О
ОБЖ
Н
Немецкий язык
Б
Беларуская мова
У
Українська література
М
Музыка
П
Психология
А
Алгебра
Л
Литература
Б
Биология
М
МХК
О
Окружающий мир
О
Обществознание
И
История
Г
Геометрия
Ф
Французский язык
Ф
Физика
Д
Другие предметы
Р
Русский язык
Г
География
anonim1235
anonim1235
23.09.2021 20:38 •  Информатика

5) Шахматная ладья ходит по горизонтали или вертикали. Даны две различные клетки шахматной доски, определите, может ли ладья попасть с первой клетки на вторую одним ходом. Формат входных данных Программа получает на вход четыре числа от 1 до 8 каждое, задающие номер столбца и номер строки сначала для первой клетки, потом для второй клетки. Формат выходных данных Программа должна вывести YES, если из первой клетки ходом ладьи можно попасть во вторую или NO в противном случае. Sample Input: 4 4 5 5 Sample Output: NO НАПИШИТЕ В

Показать ответ
Ответ:
tekeevalb
tekeevalb
15.09.2020 06:49

public class MyClass {

   public static void main(String args[]) {

       System.out.println("4, 4, 5, 5 == " + isValidMove(4, 4, 5, 5));

       System.out.println("4, 4, 4, 7 == " + isValidMove(4, 4, 4, 7));

   }

   

   public static boolean isValidMove(int fromRow, int fromCol, int toRow, int toCol) {

       int i;

   

       // Попытка двинуться в то место где фигура уже стоит

       if (fromRow == toRow && fromCol == toCol)

           return false;

   

       // Collision detection

       if (fromRow == toRow) {

           // горизонтальное движение

           if (fromCol < toCol) {

               // вправо

               for (i = fromCol + 1; i <= toCol; ++i)

                   if (!isValidPosition(fromRow, i))

                       return false;

           } else {

               // влево

               for (i = fromCol - 1; i >= toCol; --i)

                   if (!isValidPosition(fromRow, i))

                       return false;

           }

       } else if (fromCol == toCol) {

           // вертикальное движение

           if (fromRow < toRow) {

               // движение вниз

               for (i = fromRow + 1; i <= toRow; ++i)

                   if (!isValidPosition(i, fromCol))

                       return false;

           } else {

               // движение вверх

               for (i = fromRow - 1; i >= toRow; --i)

                   if (!isValidPosition(i, fromCol))

                       return false;

           }

       } else {

           // не валидное движение

           return false;

       }

   

       return true;

   }

   

   public static boolean isValidPosition(int row, int col) {

       boolean result = false;

       if (row > 0 && row < 7) {

           result = true;

       }

       

       if (col > 0 && col < 7) {

           result = true;

       }

       

       return result;

   }

}

P.S.

Не забывайте нажать " ", поставить оценку, и если ответ удовлетворил, то выберите его как "Лучший" :)


5) Шахматная ладья ходит по горизонтали или вертикали. Даны две различные клетки шахматной доски, оп
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота