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

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

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

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

13.08.2014, 21:17. Просмотров 539. Ответов 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;
}
Пишет что решение "частично". Может кто подскажет что я упустил?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.08.2014, 21:17     Проверить можно ли ходом короля из одной клетки попасть в другую
Посмотрите здесь:
C++ Определить, может ли ладья попасть с первой клетки на вторую одним ходом
C++ Определить может ли конь попасть с первой клетки на вторую одним ходом?
Определить, может ли король попасть с первой заданной клетки на вторую одним ходом C++
Определить, может ли король попасть с первой заданной клетки на вторую одним ходом (шахматы) C++
Выяснить, можно ли с заданного поля одним ходом слона попасть на другое заданное поле C++
Выяснить можно ли с поля (k,l) одним ходом ферьзя попасть на поле(m,n). Если нет, то выяснить, как это можно сделать за два хода C++
Проверить — можно ли из одной строки перестановкой букв получить другую C++
Попасть из одной точки двумерного массива в другую C++
C++ С помощью метода волны найти кратчайший путь из одной клетки в другую (ход конём)
C++ Проверить, входят ли числа одной последовательности в другую
C++ можно ли в с++ вызвать переменную из одной функции в другую т.е. мы переменну задали в одной функции а использовали в другой... и как это реализовать?
Вывести все возможные поля, на которые может попасть шахматный конь за один прыжок из данной клетки C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
6282 / 5885 / 1906
Регистрация: 18.12.2011
Сообщений: 15,099
Завершенные тесты: 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
4 / 4 / 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     Проверить можно ли ходом короля из одной клетки попасть в другую
Ответ Создать тему
Опции темы

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