Найдите победителя в игреJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Найдите победителя в игре

Сообщение Anonymous »


Джон и Доу играют в игру. В игре им даются N ключей, причем N-1 клавиш покрыты латунью, а одна - посеребрена. P — это позиция посеребренной клавиши, которая является правильной.
Чтобы играть, Джон и Доу ходят по очереди, и в каждом ходу они должны выбирать последовательные клавиши M, которые должны включать серебряный ключ и поменяйте их порядок. Чтобы выиграть игру, нужно поместить посеребрённый ключ в положение X. Джон начинает игру.
Предположим, что Джон и Доу играют оптимально.
Примечание: индексация начинается с 1.
Выведите имя игрока, который выиграет. Выведите Draw, если игра закончилась вничью.

Код: Выделить всё

N = number of keys
P = position of the silver-plated key
M = Consecutive keys to be reversed
X = Winning position
Ограничения:

Код: Выделить всё

each input range is from 1 to 10^6
Пример 1:

Код: Выделить всё

N=3,P=1,M=2,X=2
Ответ: Объяснение:
Всего существует 3 ключа. Первый — посеребренный ключ. На каждом ходу игроки должны выбрать два последовательных ключа и поменять их порядок. Выигрышная позиция – 2. Джон начинает игру. Таким образом, он может просто выбрать первые два ключа и поменять их порядок. В этом ходу он сможет поставить серебряный ключ на выигрышную позицию. Итак, ответ: Джон
Пример 2:

Код: Выделить всё

N=4,P=1,M=2,X=4
Ответ: Объяснение:
  • Всего 4 ключа. Первый — посеребренный ключ. На каждом ходу игроки должны выбрать два последовательных ключа и поменять их порядок. Выигрышная позиция — 4.
  • Джон начинает игру. Таким образом, он может просто выбрать первые два ключа и поменять их порядок. Посеребренный ключ находится в положении 2.
  • После этого Доу снова выберет первые 2 ключа, поменяв их местами, чтобы поместить посеребренный ключ в положение 1. С другой стороны, он мог бы поменять порядок 2-го и 3-го ключей, но на своем следующем ходу Джон сможет переместить посеребренный ключ из позиции 3 в позицию 4 и выиграть игру.
    < li>В оптимальной игре предыдущие два хода выполняются бесконечно, поэтому ни Джон, ни Доу не смогут выиграть игру. Итак, напечатайте Draw.
Это мой код:

Код: Выделить всё

public String solve(int N, int P, int M, int X) {
int[] ar = new int[N];
ar[P-1] = 1;
for(int i=0; i

Подробнее здесь: [url]https://stackoverflow.com/questions/77114160/find-winner-for-a-game[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»