Задать вопрос
@PRIYD

Как провалидировать ход коня?

Задача: https://acmp.ru/index.asp?main=task&id_task=6
Проблема: на 10м тесте падает, ломаю голову, не понимаю почему.
Код:
string n;
cin >> n;

string a = "ABCDEFGH";

int i1 = n[1] - '0';
int i2 = n[4] - '0';
char c1 = n[0];
char c2 = n[3];

int iN = abs(i1-i2);
int cN = abs(find(a.begin(), a.end(), c1) - find(a.begin(), a.end(), c2));

bool isCharactersWrong = find(a.begin(), a.end(), c1) == a.end() || find(a.begin(), a.end(), c2) == a.end(); 
bool isNumbersWrong = i1>8 || i2>8 || i1<=0 || i2<=0;

if (isNumbersWrong || isCharactersWrong) {
        cout << "ERROR" << endl;
} 
else if ((iN==2 && cN==1) || (iN==1 && cN==2)) {
        cout << "YES" << endl;
}
else {
        cout << "NO" << endl;
}
  • Вопрос задан
  • 88 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
wataru
@wataru Куратор тега Алгоритмы
Разработчик на С++, экс-олимпиадник.
Попробуйте проверять, что средний символ "-".
Еще надо проверять, что длина строки ровно 5 символов.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы