Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.05.2016, 20:15   #11
FPaul
Форумчанин
 
Регистрация: 25.01.2015
Сообщений: 472
По умолчанию

Да. У меня FreePascal, а PascalABC и PascalABC.NET такое не понимают.
Введите промежуточную переменную
Код:
          Temp := DFS(Combination + Digit);
          DFS := Temp;
          if Temp then
Или, лучше, обзовите её Result.
FPaul вне форума Ответить с цитированием
Старый 24.05.2016, 20:23   #12
Nurz
Пользователь
 
Регистрация: 24.05.2016
Сообщений: 10
По умолчанию

Да, все работает, спасибо. Сейчас буду код изучать. Бился над ней чуть больше недели. А вы тут за пару часов решили её. Эх, мне бы ваши знания. Но буду стремится. Еще раз огромное спасибо за помощь.
Nurz вне форума Ответить с цитированием
Старый 24.05.2016, 20:32   #13
FPaul
Форумчанин
 
Регистрация: 25.01.2015
Сообщений: 472
По умолчанию

Так на работе я долго над ней работал. Только, когда узнал о теории графов - также долго плакал, что оказывается всё очень просто. Надо было лишь дискретную математику учить.
FPaul вне форума Ответить с цитированием
Старый 24.05.2016, 20:35   #14
FPaul
Форумчанин
 
Регистрация: 25.01.2015
Сообщений: 472
По умолчанию

Ну и ко всему - для вашей задачи это не окончательное решение. Т.к. вам нужно вводить n, а не задавать его константой. И кроме того, при больших n результат уже не уместится в стандартные типы.
FPaul вне форума Ответить с цитированием
Старый 24.05.2016, 20:40   #15
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от FPaul Посмотреть сообщение
Ну и ко всему - для вашей задачи это не окончательное решение. Т.к. вам нужно вводить n, а не задавать его константой. И кроме того, при больших n результат уже не уместится в стандартные типы.
В стандартные - нет. Но есть ведь и длинная арифметика. А если использовать стек, гигушную память, вообще можно забить за 15 секунд пушем.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 24.05.2016, 20:43   #16
Nurz
Пользователь
 
Регистрация: 24.05.2016
Сообщений: 10
По умолчанию

Я знаю что код еще нужно будет модефицировать. Да и в динамические структуры нужно запихнуть. В принципе это задумывалось изначально. Думал сначала о списке кольцевом. Но что-то мне кажется что он не зайдет здесь.
Nurz вне форума Ответить с цитированием
Старый 24.05.2016, 23:18   #17
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

FPaul, насколько я понял Ваш код, там осуществляется поиск в глубину, у которого сложность явно выше линейной. А в условии требуется линейная. Предлагаю такой вариант (написан на C++, но ничего сложного в переводе на паскаль нет):
Код:
#include <iostream>

using namespace std;

int main()
{
    int N;
    cin >> N;
    int count = 1 << N - 1;
    int flags[count] = {0};
    flags[0] = 1;
    int mask = count - 1;
    for (int i =  mask; i > 0; i = (i << 1) & mask) flags[i] = 1;
    for (int i = 0; i < N; ++i) cout << 0;
    for (int i = 0, j = 0; i < (1 << N) - 2 * N; ++i) {
    	cout << flags[j];
    	int tmp = j;
    	j = (j << 1) & mask | flags[j];
    	flags[tmp] = 1;
    }
    for (int i = 0; i < N; ++i) cout << 1;
    return 0;
}
Для N от 1 до 6 ответ верный, дальше не проверял.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 25.05.2016, 17:09   #18
Nurz
Пользователь
 
Регистрация: 24.05.2016
Сообщений: 10
По умолчанию

FPaul
Код:
  
    int flags[count] = {0};
  //А так разве можно задавать массив? Там же по сути должна быть константа. А таким образом задается динамический массив.
 // int *flags = new int[count]; Но если использовать этот вариант, у меня вылетает ошибка.

Последний раз редактировалось Nurz; 25.05.2016 в 17:45.
Nurz вне форума Ответить с цитированием
Старый 25.05.2016, 18:26   #19
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Компилятор и предыдущую запись понимал (и выделял место под count).
У меня ошибок не возникает:
Код:
#include <iostream>

using namespace std;

int main()
{
    int N;
    cin >> N;
    int count = 1 << N - 1;
    int *flags = new int[count];
    for (int i = 0; i < count; ++i) flags[i] = 0;
    flags[0] = 1;
    int mask = count - 1;
    for (int i =  mask; i > 0; i = (i << 1) & mask) flags[i] = 1;
    for (int i = 0; i < N; ++i) cout << 0;
    for (int i = 0, j = 0; i < (1 << N) - 2 * N; ++i) {
    	cout << flags[j];
    	int tmp = j;
    	j = (j << 1) & mask | flags[j];
    	flags[tmp] = 1;
    }
    for (int i = 0; i < N; ++i) cout << 1;
    delete[] flags;
    return 0;
}
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 25.05.2016, 18:57   #20
Nurz
Пользователь
 
Регистрация: 24.05.2016
Сообщений: 10
По умолчанию

А вот эта программа у меня спокойно компилируется, без всяких ошибок. Спасибо.
Nurz вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дана последовательность нулей и единиц... (Delphi) HarleyKing Помощь студентам 3 24.11.2015 00:36
дана строка состоящая из групп нулей и единиц. Подсчитать количества единиц в группах с нечетным количеством символов (на Delphi) ArturBattalov Помощь студентам 1 06.10.2013 16:16
Найти байтс наибольшим числом единиц и найти байт с наибольшим чилом нулей. Найти разность число единиц м Beren42 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 14.12.2010 17:44
Задана последовательность состоящая из единиц и нулей valiaam55 Паскаль, Turbo Pascal, PascalABC.NET 1 29.09.2010 17:16
Получите последовательность b1...bn из нулей и единиц Я_Студент Паскаль, Turbo Pascal, PascalABC.NET 2 04.07.2008 12:40