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

1 до клетки номер N. На каждом ходу игрок бросает кубик и двигает фишку на столько клеток вперёд, какое число выпало на кубике. Попасть нужно ровно в клетку N, если игрок «перешагнул» её, то начинает игру заново. Некоторые клетки поля помечены как «win», попав на такую клетку в результате броска кубика, фишка перемещается в клетку с большим номером. Также есть клетки поля, помеченные как «fail» — попав на неё в результате броска кубика, фишка перемещается в клетку с меньшим номером. При этом перемещение по «win» или «fail» происходит один раз, то есть даже если в результате такого перемещения фишка попала на клетку, помеченную «win» или «fail», то она остаётся в ней до следующего броска кубика. Если из клетка с номером N помечена как «win» или «fail», то переход тоже осуществляется и игра не заканчивается. Группа студентов собралась сыграть в настольную игру на встрече, однако, ни у кого не нашлось кубика. Зато ноутбуков было в достатке и Васю попросили написать программу, которая будет генерировать случайные числа от 1 до 6.Но Васе очень нравится Маша и он хочет, чтобы ей выпадали такие числа, которые приведут её фишку к победе за наименьшее число ходов. На рисунке сплошными стрелками показаны ходы по броску кубика, а пунктирными — переходы «win» или «fail». Формат входных данных В первой строке записано натуральное число N (1 ≤ N ≤ 100000) — количество клеток поля. В следующей строке записано N натуральных чисел Wi (1 ≤ Wi ≤ N). Число Wi обозначает, что попав в клетку i в результате броска кубика, фишка перемещается в клетку Wi. Формат результата Выведите число K — наименьшее количество ходов. В следующей строке выведите K чисел от 1 до 6 — какие числа должны выпадать на кубике для того, чтобы фишка дошла от клетки 1 до клетки N за K ходов. Если решений несколько — выведите любое из них. Гарантируется, что решение существует.

Ответы

    Здравствуйте Ирина!    Готов помочь Васе за небольшое вознаграждение.    Мне не ясен один момент. Если игрок «перешагнул» последнюю клетку, то он перемещается на первую и останавливается или продолжает движение? Например N = 10, игрок стоя на 8й клетке выкинул 6. В резултате этого хода он передвинется на клетку 1 или на клетку 4 (8-9, 9-10, 10-1, 1-2, 2-3, 3-4)?    Довольно часто к таким задачам прилагаются простенькие примеры ввода и правильные ответы. Если они у Вас есть то опубликуйте их, это позволит мне проверить программу.
01.12.16

Еva

Читать ответы

1 1

Читать ответы
Посмотреть всех экспертов из раздела Учеба и наука > Информатика
Пользуйтесь нашим приложением Доступно на Google Play Загрузите в App Store