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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Fobos315
2 / 2 / 0
Регистрация: 25.04.2014
Сообщений: 68
#1

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

13.08.2014, 21:17. Просмотров 574. Ответов 3
Метки нет (Все метки)

Делать было нечего решил все простые задачи перерешать с сайта. Ближе к делу:
Поле шахматной доски определяется парой чисел (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;
}
Пишет что решение "частично". Может кто подскажет что я упустил?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.08.2014, 21:17
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Проверить можно ли ходом короля из одной клетки попасть в другую (C++):

Определить может ли конь попасть с первой клетки на вторую одним ходом? - C++
Добрый день. Задача: Шахматный конь ходит буквой “Г” — на две клетки по вертикали в любом направлении и на одну клетку по горизонтали,...

Определить, может ли ладья попасть с первой клетки на вторую одним ходом - C++
Шахматная ладья ходит по горизонтали или вертикали. Даны две различные клетки шахматной доски, определите, может ли ладья попасть с первой...

Определить, может ли король попасть с первой заданной клетки на вторую одним ходом - C++
Шахматный король ходит по горизонтали, вертикали и диагонали, но только на 1 клетку. Даны две различные клетки шахматной доски, определите,...

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

Выяснить, можно ли с заданного поля одним ходом слона попасть на другое заданное поле - C++
Здравствуйте помогите пожалуйста, как это можно сделать за два хода Поле шахматной доски определяется парой натуральных чисел, каждое из...

Выяснить можно ли с поля (k,l) одним ходом ферьзя попасть на поле(m,n). Если нет, то выяснить, как это можно сделать за два хода - C++
Поле шахмотной доски определяеся парой натуральных чисел, каждая из которых не превосходит восьми: первое число номер вертикали (при счете...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
zss
Модератор
Эксперт С++
6382 / 5947 / 1927
Регистрация: 18.12.2011
Сообщений: 15,264
Завершенные тесты: 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";
1
Fobos315
2 / 2 / 0
Регистрация: 25.04.2014
Сообщений: 68
13.08.2014, 22:16  [ТС] #3
zss Ваш вариант принял. Но мой почему то 2 из 33 тестов не прошел. Какие бы варианты я не пробовал все норм. парадокс.
0
flash_back
4 / 4 / 0
Регистрация: 07.02.2016
Сообщений: 65
Завершенные тесты: 1
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;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.06.2016, 13:50
Привет! Вот еще темы с ответами:

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

Попасть из одной точки двумерного массива в другую - C++
Создать вектор, в котором генерируются вектора разной длинны (аналог ступенчатого массива), и заполняются случайными значениями. Затем по...

С помощью метода волны найти кратчайший путь из одной клетки в другую (ход конём) - C++
Пытаюсь решить такую задачу: с помощью метода волны нужно найти кратчайший путь из одной клетки в другую. Проблема состоит в том, что я...

Проверить, входят ли числа одной последовательности в другую - C++
Даны натуральное число n, целые числа а1, а2, … , а10, b1, b2, … , bn. Среди а1, а2, … , а10 нет повторяющихся чисел, нет их и среди b1,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
16.06.2016, 13:50
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru