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

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

10.11.2011, 16:55. Показов 1451. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru