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

Обсуждение задачи 1054. Ханойская башня

why WA? Is there any edge case I haven't covered?
Послано AlainDelon 11 окт 2007 19:01
c++ code as below
===================

#include <cstdio>
#include <iostream>

#define MAX_NUM 31

using namespace std;

int g_Dseq[MAX_NUM] = {1};
int g_Dtargseq[MAX_NUM];
int g_count = 0;
int N = 1;

int g_done = 0;

void movedisk(int n, int dsrc, int ddesc);
void hanoi_proc(int n,int dsrc, int daid, int ddesc);
int isdone();

void main()
{

int i=0;

cin >> N;

if(N <1 || N > 31)
{
    cout<<-1;

}else
{


    for(i=0;i<N;++i)
    {
    cin>> g_Dtargseq[i];
    g_Dseq[i] = 1;

    }



    hanoi_proc(N, 1, 3, 2);


    if(g_done ==0)
    cout<<-1;

}


}


int isdone()
{
    for(int i=0;i<N;++i)
    {
        if(g_Dseq[i] != g_Dtargseq[i]) return 0;
    }

    return 1;
}

void movedisk(int n, int dsrc, int ddesc)
{

    g_Dseq[n-1] = ddesc;
    ++g_count;



    if(g_done ==0 && isdone() == 1)
    {
        cout<<g_count;
        g_done = 1;
    }
}



void hanoi_proc(int n,int dsrc, int daid, int ddesc)
{

    if(n == 1)
    {
        movedisk(n, dsrc, ddesc);

    }else
    {
        hanoi_proc(n-1, dsrc, ddesc, daid);

        movedisk(n, dsrc, ddesc);

        hanoi_proc(n-1, daid, dsrc, ddesc);
    }
}


=============================