Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Задачи по C/С++

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

Открыть новую тему     Написать ответ в эту тему

Zyava



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

#include <stdio.h>
#include <string.h>
#define MAXRESULTS 1000
class ParenthesisesResultsContainer
{
public:
    char **Results;
    int ResultsCount;
     
    ParenthesisesResultsContainer()
    {
        ResultsCount = 0;
        Results = new char [MAXRESULTS];
    }
     
    int Append(char *new_result, int new_result_length)
    {
        int fl = 0;
        for (i = 0; i < ResultsCount; i++)
        {
            if (strcmp(Results[i], new_result) == 0)
            {
                fl = 1;
                break;
            }
        }
        if (fl == 0)
        {
            Results[ResultsCount] = new char[new_result_length];
            strcpy( Results[ResultsCount], new_result);
            ResultsCount++;
            return 1;
        }
        return 0;
    }
}
 
void RecursiveParenthesisesSearch(int count, ParenthesisesResultsContainer *result, char *current_result, int current_result_length)
{
    char temp = new char[current_result_length + 2];
    if (count > 0)
    {
        sprintf("()%s", current_result);
        if (result.Append(temp))
        {
            RecursiveParenthesisesSearch(count - 1, result, temp, current_result_length + 2);
        }
        sprintf("%s()", current_result);
        if (result.Append(temp))
        {
            RecursiveParenthesisesSearch(count - 1, result, temp, current_result_length + 2);
        }
        sprintf("(%s)", current_result);
        if (result.Append(temp))
        {
            RecursiveParenthesisesSearch(count - 1, result, temp, current_result_length + 2);
        }
    }
}
 
void main()
{
    ParenthesisesResultsContainer result;
    int n;
    printf("Enter n:");
    scanf("%d", &n);
    if (n % 2 == 1)
    {
        printf("\nNo correct variants");
    }
    else
    {
        RecursiveParenthesisesSearch(n / 2, &result, "", 0);
        printf("\nCorrect variants;\n");
        for (int i = 0; i < result.ResultsCount; i++)
        {
            printf("%s\n", result.Results[i]);
        }
    }
}

Всего записей: 324 | Зарегистр. 04-05-2006 | Отправлено: 15:29 08-07-2008 | Исправлено: Zyava, 15:32 08-07-2008
Открыть новую тему     Написать ответ в эту тему

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Задачи по C/С++


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru