Учеба и наука

Здравствуйте! Помогите, пожалуйста, написать программу, которая бы решала эту задачу на языке 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 ходов. Если решений несколько — выведите любое из них. Гарантируется, что решение существует.

ноябрь 29, 2016 г.

  • Всего ответов: 1

  • Алексей - аватарка

    Алексей

    9-й в Технологиях

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

    декабрь 1, 2016 г.