Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.61/64: Рейтинг темы: голосов - 64, средняя оценка - 4.61
192 / 166 / 82
Регистрация: 01.07.2016
Сообщений: 943
1

Игра с ладьей

04.02.2017, 20:57. Показов 13162. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
На бесконечной вправо и вверх шахматной доске находится ладья. Два игрока передвигают ее по очереди. За один ход разрешено сдвинуть ладью вниз или влево на произвольное (ненулевое) количество клеток так, чтобы ладья не покинула доску. Цель игры – переместить ладью в левый нижний угол, то есть клетку с координатами (1,1). Известно, что оба игрока придерживаются оптимальной стратегии. Игрок №1 ходит первым, при этом он обязан совершить хотя бы один ход. Если первый ход сделать нельзя, то определить победителя также невозможно. Требуется написать программу, которая найдет номер победившего игрока, либо определит, что этого сделать нельзя.

Входные данные

Входной файл INPUT.TXT содержит два натуральных числа, разделенных пробелами: X и Y – координаты ладьи перед первым ходом (X,Y ≤ 109).

Выходные данные

В выходной файл OUTPUT.TXT выведите одно число – номер победившего игрока. Если победителя определить невозможно, то следует вывести 0.

Примеры:
HTML5
1
2
1 1 - 0
1 6 - 1
Я код написал но не принимается. Вроде тут логика такая что все позиции выше диагонали выйгрышные для 1 игрока а ниже и сама диагональ выйгрышные для 2 игрока
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
 
using namespace std;
 
int main()
{
    int64_t x,y;
    cin>>x>>y;
    if(x==1 && y==1){
        cout<<"0";
        return 0;
    }
    if(x!=1 && y==1){
        cout<<"0";
        return 0;
    }
    if(y>x){
        cout<<"1";
        return 0;
    }
    else cout<<"2";
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.02.2017, 20:57
Ответы с готовыми решениями:

Игра с ладьей
Добрый вечер, не видел решения данной задачи. Подчеркиваю - задача для новичков. Спасибо. На...

Обход ладьёй доски
Написать программу перемещения ладьи и вывести решение в отдельном окне, сформированном на языке ...

Выяснить можно ли попасть ладьей в заданную клетку поля
Поле шахматной доски определяется парой натуральных чисел, каждое из которых не превосходит восьми:...

Определить, можно ли, двигаясь ладьей только по заданным полям, обойти их все
Помогите, пожалуйста, решить задачу. Необходимо рекурсивное решение. Вводятся координаты N полей...

6
0 / 0 / 1
Регистрация: 29.01.2017
Сообщений: 1
04.02.2017, 22:56 2
Лучший ответ Сообщение было отмечено no swear как решение

Решение

Здесь всего 2-а условия :
Кто первый ходит и какого вида матрица .
Главное правило это встать на эл-т по главной диагонали ближайшей квадр. матрицы и передать ход сопернику .
Отсюда 2-а правила :
1) Если матрица квадратная , то 1ый игрок проигрывает (так как уже стоит на главной диагонали , а соперник каждым своим ходом будет возвращаться на эл-т гл. диагонали , пока не окажутся на клетке 2x2 , а там чей ход тот и проиграл)
2) Если матрица не квадратная , то 1ый игрок выигрывает (т.к. 1ым ходом 1ый игрок сразу идет на эл-т гл. диагонали , 2ой игрок будет уходить с гл. диагонали своими ходами , а 1ый будет возвращаться на неё и в итоге дойдут до положения ладьи на поле 2x2 в момент когда ход будет 2го игрока , ну и там все ясно , либо 1ый столбец либо 1 строка)


Если на словах то так (здесь строка и столбец это нач. коорд. ладьи на доске) :

если (строка==1 && столбец ==1)
{победитель неопределен}

если (строка != столбец )
{выйграет 1ый игрок}
иначе {выйграет 2ой игрок}
0
192 / 166 / 82
Регистрация: 01.07.2016
Сообщений: 943
05.02.2017, 10:54  [ТС] 3
Ну в принципе это то что я и сказал "Выше диагонали (y>x) выиграет 1ый игрок, иначе 2" или нет?
0
Диссидент
Эксперт C
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
05.02.2017, 11:04 4
Цитата Сообщение от no swear Посмотреть сообщение
в принципе это то что я и сказал "Выше диагонали (y>x) выиграет 1ый игрок, иначе 2" или нет?
Не совсем. (y > x || y < x) - будет точнее Что и написано у уважаемого Cucamber
1
192 / 166 / 82
Регистрация: 01.07.2016
Сообщений: 943
05.02.2017, 11:18  [ТС] 5
Цитата Сообщение от Байт Посмотреть сообщение
(y > x || y < x)
y<x - я не понял этот момент. Если возьмем координаты 4x3 то каким образом 1ый игрок может выиграть объясните пожалуйста. Разве не будет так что: 4x2(1 игрок), 3x2(2 игрок), 3x1(1 игрок), 1x1(2 игрок)
0
Диссидент
Эксперт C
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
05.02.2017, 11:25 6
Лучший ответ Сообщение было отмечено no swear как решение

Решение

Цитата Сообщение от no swear Посмотреть сообщение
Если возьмем координаты 4x3 то каким образом 1ый игрок может выиграть объясните пожалуйста.
Ходом на 3х3
1
192 / 166 / 82
Регистрация: 01.07.2016
Сообщений: 943
05.02.2017, 11:30  [ТС] 7
Как же я сам не мог додуматься до этого! А я думал что первый игрок всегда делает ход "вниз"
0
05.02.2017, 11:30
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.02.2017, 11:30
Помогаю со студенческими работами здесь

В левом нижнем углу шахматной доски размером m x n помещена ладья. Требуется обойти ладьей доску, проходя чере
В левом нижнем углу шахматной доски размером m x n помещена ладья. Требуется обойти ладьей доску,...

Бюджет 4500 гр. Конфигурация работа в Office, AutoCAD, игра Assassin, онлайн игра World of Tanks
Собираю компьютер для сестры. Основные требования: работа в Microsoft Office, AutoCAD, игра...

Игра в загадки. Загадать загадку. Если ответ верен – поздравить пользователя. Затем сообщить, что игра окончена.
Всем привет! Меня зовут VitoScaletta, совсем недавно начал обучаться JS, но очень тяжело в голову...

Игра в «Одиннадцать предметов», игра Баше.
прошу помощи в создании программы! Разработать программную модель следующей игры двух...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru