Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 14.03.2010
Сообщений: 19

Генератор ожерелья

10.11.2011, 16:55. Показов 1456. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Вот задали такую задачку на C++. Так-то все сделал осталась только эта. На PASCAL я еще представляю как делать, а на С нет. Прошу помощи.

Круглое ожерелье состоит из N жемчужин. Каждая жемчужина либо черного, либо белого цвета. Получите все возможные варианты ожерелий, которые можно составить из N жемчужин. Требуется написать программу для решения поставленной задачи. Примечание: Ожерелья являются замкнутыми. Это означает, например, что два ожерелья, состоящие из четырех жемчужин: белая-белая-белая-черная и белая-черная-белая-белая являются одинаковыми, а ожерелья: белая-черная-черная-белая и белая-черная-белая-черная - различны.

Формат входных данных: входной файл INP.TXT содержит единственное целое число N( 1<=N<20). Формат выходных данных: первая строка выходного файла OUT.TXT должна содержать количество полученных ожерелий. Во всех остальных строках выходного файла должно содержаться по одному ожерелью. Ожерелье представляется в виде строки символов "Б" и "Ч", что соответствует белой и черной жемчужине. Пробелы в строке не ставятся.

P/S Если конечно можно, приведите, пожалуйста, примеры решения например на Delphi, чтобы я понял.
P/S/S помогите хотя бы цикл организовать, как сделать проверку на замкнутость?
P/S/S/S Помогите мне сейчас пожалуйста, а я обязательно заполню эту брешь в моих знаниях. Даю слово! Тем более, я самоучка. Нам сказали, учите, то что дают. Я не хочу, (изучаем мы сейчас Pascal) и я начал изучать C++, конечно я знаю не все, но это только начало!
Спасибо!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.11.2011, 16:55
Ответы с готовыми решениями:

Генерирование ожерелья
Здравствуйте. Вот задали такую задачку на C++. Так-то все сделал осталась только эта. На PASCAL я еще представляю как делать, а на С нет....

Соберите все возможные варианты ожерелья
Для принцесы Будур заказано волшебное ожерелье из бусин, котрое должно излечить её. Бусины помечены пятью различными заглавнымит латинскими...

Сколькими способами можно раскрасить бусины ожерелья из девяти (шести)
1. Сколькими способами можно раскрасить бусины ожерелья из девяти (шести) одинаковых бусин в a цветов, если бусы можно переворачивать?

3
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
10.11.2011, 16:58
Цитата Сообщение от Bernuar Посмотреть сообщение
На PASCAL я еще представляю как делать, а на С нет
Так ты напиши свой вариант на паскале, а тебе его кто-нибудь тупо на си перепишет
0
 Аватар для kzru_hunter
1124 / 795 / 101
Регистрация: 01.02.2011
Сообщений: 1,887
Записей в блоге: 1
10.11.2011, 19:12
Bernuar можете написать алгоритм подсчета ожерелий?

Добавлено через 1 час 58 минут
Сделал чисто из-за интереса подсчёт кол-ва разных ожерелий и вывод их в мемо (1 и 0 вместо Ч и Б):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
        const int iNumber = 10;
        bool bb[3000][iNumber]; // 3000 хватит при кол-ве жемчужин не более 15
        int bb_count = 0; // кол-во разных ожерелий
 
        bool b[iNumber] = {0};
 
        int iMax = pow(2, iNumber);
 
        for ( int i = 0; i < iMax; i++ )
        {
                // число преобразую в массив битов
                for ( int j = 0; j < iNumber; j++ )
                {
                        b[j] = i & (1<<j);
                }
 
                bool bFound = false;
                for ( UINT j = 0; j < bb_count; j++ )
                {
                        for ( int x = 0; x < iNumber; x++ )
                        {
                                // сравнивание проверямого ожерелья с уже имеющимися
                                if ( memcmp(bb[j], &b, iNumber) == 0 )
                                {
                                        bFound = true;
                                        break;
                                }
 
                                // смещение жемчужин в ожерелье
                                bool btemp = b[0];
                                memcpy(&b, b+1, iNumber-1);
                                b[iNumber-1] = btemp;
                        }
                }
 
                // если данное ожерелье не совпадает с уже проверенными, то добавляем его
                if (!bFound)
                {
                        memcpy(bb[bb_count++], &b, iNumber);
                }
        }
 
        Memo1->Clear();
        Memo1->ScrollBars = ssVertical;
        Memo1->Lines->Add("Ожерелий = " + String(bb_count));
        for ( UINT i = 0; i < bb_count; i++ )
        {
                String s = "";
                for ( int j = 0; j < iNumber; j++ )
                {
                        s += String((int)bb[i][j]);
                }
                Memo1->Lines->Add(s);
        }
К сожалению, программа уже начинает долго думать при кол-ве жемчужин > 12.
Если бы знать оптимальный алгоритм, можно было бы сделать быстрее.
По остальной части (работа с файлами и т.д.) вся инфа есть в инете.
0
0 / 0 / 0
Регистрация: 14.03.2010
Сообщений: 19
10.11.2011, 20:23  [ТС]
А если попробовать вообще без перебора? Попробую что нибудь с леммой Бернсайда сделать.
Можете скомпилировать в exe, а то что то не компилируется. Под WIn'ом тоже пробовал среду программирования запустить, тоже не выходит. На винду переключаться не хочется.
А сказали в EXE принести(. Придется винду ставить(
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.11.2011, 20:23
Помогаю со студенческими работами здесь

Определить иерархию драгоценных и полудрагоценных камней. Отобрать камни для ожерелья
как создать такую программу?? Камни. Определить иерархию драгоценных и полудрагоценных камней. Отобрать камни для ожерелья. Посчитать...

Сколько можно составить ожерелий, если не различать ожерелья, получающиеся друг из друга поворотом в плоскости
Составляются ожерелья из x красных, y зеленых и z синих бусин. Сколько всего таких ожерелий, если не различать ожерелья, получающиеся друг...

Генератор комплексных чисел. Генератор гауссовских целых чисел
rand(1,n) - генерирует случайные числа, нормально распределенные на . Есть ли аналогичный генератор для комплексных чисел? В частности...

Генератор
Пишу лабу нужно написать генератор псевдослучайных чисел методом Фон Неймана х0 = 0.2152, возводится в квадрат: ( х0 )2 =...

QR генератор
Подскажите пожалуйста генератор QR кодов, также можно Data Matrix и EAN 13.Онлайн генераторы не подходят потому что генератор нужен в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru