ENG  RUSTimus Online Judge
Online Judge
Задачи
Авторы
Соревнования
О системе
Часто задаваемые вопросы
Новости сайта
Форум
Ссылки
Архив задач
Отправить на проверку
Состояние проверки
Руководство
Регистрация
Исправить данные
Рейтинг авторов
Текущее соревнование
Расписание
Прошедшие соревнования
Правила
вернуться в форум

Обсуждение задачи 1789. В поисках Додекаэдра

why this algo is wrong
Послано nomercy 14 фев 2016 15:52
ans.push_back(2);
    ans.push_back(2);
    for (int i = 2;;++i){
        if (i == n){
            ans.push_back(i);
            break;
        }
        ans.push_back(i+1);
        ans.push_back(i-1);
        ans.push_back(i);
    }

WA3

if n==5 answer
12
2 2 3 1 2 4 2 3 5 3 4 5

Edited by author 14.02.2016 15:53

Edited by author 14.02.2016 15:53
Re: why this algo is wrong
Послано Jane Soboleva (SumNU) 14 фев 2016 16:22
Here's a simple program testing your answer. It outputs all the possible paths when the figure is still not found. You can modify constants in the header to test another one.

program test1789;
const nmoves = 12;
      nwidth = 5;
      mv: array[1..nmoves] of longint = (2, 2, 3, 1, 2, 4, 2, 3, 5, 3, 4, 5);
var i: longint;
    path: array[0..nmoves] of longint;
procedure Solve(v, z: longint);
var q: longint;
begin
    if (v < 1) or (v > nwidth) then exit;
    if z > nmoves then begin
        for q:=0 to nmoves do write(path[q], ' '); writeln;
    end else begin
        //if (v < 1) or (v > nwidth) then exit;
        if v = mv[z] then exit;
        path[z]:=v - 1;
        Solve(v - 1, z + 1);
        path[z]:=v + 1;
        Solve(v + 1, z + 1);
    end;
end;
begin
    for i:=1 to nwidth do begin
        path[0]:=i;
        Solve(i, 1);
    end;
end.

UPD: A small fix, moving one line into a proper place.

Edited by author 14.02.2016 16:28
Re: why this algo is wrong
Послано nomercy 14 фев 2016 17:17
thanks