Форум программистов, компьютерный форум CyberForum.ru

Проверить можно ли ходом короля из одной клетки попасть в другую - C++

Восстановить пароль Регистрация
 
Fobos315
2 / 2 / 0
Регистрация: 25.04.2014
Сообщений: 68
13.08.2014, 21:17     Проверить можно ли ходом короля из одной клетки попасть в другую #1
Делать было нечего решил все простые задачи перерешать с сайта. Ближе к делу:
Поле шахматной доски определяется парой чисел (a, b), каждое от 1 до 8, первое число задает номер столбца, второе – номер строки. Заданы две клетки. Определите, может ли шахматный король попасть с первой клетки на вторую за один ход.
Формат входных данных:
Даны 4 целых числа от 1 до 8 каждое, первые два задают начальную клетку, вторые два задают конечную клетку. Начальная и конечная клетки не совпадают. Числа записаны в отдельных строках.
Формат выходных данных:
Программа должна вывести YES, если из первой клетки ходом короля можно попасть во вторую, или NO в противном случае.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
    int n,k,m,x;
    cin>>n;
    cin>>k;
    cin>>m;
    cin>>x;
    if ((abs(m-n)==1)||(abs(x-k)==1)||((abs(m-n)==1)&&(abs(x-k)==1)))
    cout<<"YES";
    else
    cout<<"NO";
    return 0;
}
Пишет что решение "частично". Может кто подскажет что я упустил?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.08.2014, 21:17     Проверить можно ли ходом короля из одной клетки попасть в другую
Посмотрите здесь:

на шахматной доске заданы 2 клетки соедините эти 2 клетки кратчайшим путем коня C++
Выяснить можно ли с поля (k,l) одним ходом ферьзя попасть на поле(m,n). Если нет, то выяснить, как это можно сделать за два хода C++
В таблице из N строк и N столбцов клетки заполнены цифрами от 0 до 9. Требуется найти такой путь из клетки (1, 1) в клетку (N, N C++
С одной cpp в другую C++
Перевод из одной С.С. в другую C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
5953 / 5558 / 1787
Регистрация: 18.12.2011
Сообщений: 14,204
Завершенные тесты: 1
13.08.2014, 21:26     Проверить можно ли ходом короля из одной клетки попасть в другую #2
Мне кажется, достаточно так
C++
1
2
3
4
5
6
if(m==n &&x==k) // патовая ситуация
   cout<<"NO";
else if( abs(m-n)<=1 && abs(x-k)<=1 )
   cout<<"YES";
else
   cout<<"NO";
Fobos315
2 / 2 / 0
Регистрация: 25.04.2014
Сообщений: 68
13.08.2014, 22:16  [ТС]     Проверить можно ли ходом короля из одной клетки попасть в другую #3
zss Ваш вариант принял. Но мой почему то 2 из 33 тестов не прошел. Какие бы варианты я не пробовал все норм. парадокс.
flash_back
2 / 2 / 0
Регистрация: 07.02.2016
Сообщений: 65
16.06.2016, 13:50     Проверить можно ли ходом короля из одной клетки попасть в другую #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int main() {
  int x1 = 0, y1 = 0, x2 = 0, y2 = 0;
  cin >> x1 >> y1 >> x2 >> y2;
  int dx = x1 - x2;
  int dy = y1 - y2;
  //модуль 
  if (dx < 0) dx = -dx;
  if (dy < 0) dy = -dy;
  //вверх, вниз, влево, вправо  
  if ( dx + dy == 1) cout << "YES";
  //по диагонали  
  else if (dx + dy == 2 && dx == 1 && dy == 1) cout << "YES";
  else cout << "NO";
  return 0;
}
Yandex
Объявления
16.06.2016, 13:50     Проверить можно ли ходом короля из одной клетки попасть в другую
Ответ Создать тему
Опции темы

Текущее время: 01:38. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru