![]() |
|
Модераторы: bsa |
![]()
|
|
| Alexey91 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 195 Регистрация: 18.9.2008 Репутация: нет Всего: нет |
Здравствуйте!
Есть язык, который задается множеством {0,1} Как можно перебрать все возможные элементы множества в заданном диапазоне Например, диапазон от 2 до 3 включительно 00,01,10,11 000,001,010,011,100,101,110,111 Проблема в том, что язык может состоять из произвольных цепочек, т.е. {a,b,0}, {d,e,1} |
|||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 12 Всего: 72 |
Перебирай N = количество букв в слове
Для I = 1..N Перебирай все возможные буквы на I-м месте Проверь полученное слово на допустимость в языке |
|||
|
||||
| Alexey91 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 195 Регистрация: 18.9.2008 Репутация: нет Всего: нет |
math64, мне не понятно как перебирать
Хорошо для {0,1} Минимальная длина слова N=2. Начинаем цикл. Первая позиция (I=1). Выбираем 0 или 1. Выбрали 0. На второй тоже 0. Получили 00 Но в данном случае я выбираю сам ))), а не программа Как сделать так, чтобы программа сама догадывалась, что следующее будет, например, 01 |
|||
|
||||
| Alexey91 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 195 Регистрация: 18.9.2008 Репутация: нет Всего: нет |
Я придумал с помощью рекурсии
Например N=3 (длина цепочек 3)
Это сообщение отредактировал(а) Alexey91 - 16.10.2011, 12:03 |
|||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 12 Всего: 72 |
Это сообщение отредактировал(а) math64 - 16.10.2011, 13:23 |
|||
|
||||
| Alexey91 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 195 Регистрация: 18.9.2008 Репутация: нет Всего: нет |
math64, зачем вы пишете const перед переменными?
|
|||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 12 Всего: 72 |
Потому что они константы - чтобы защитить от случайного изменения и чтобы компилятор мог выполнить оптимизацию. Если нужна возможность задавать алфавит программно - нужно соответственно модифицировать алгоритм, например, поместить всё в класс (защитой будет помещение их в секцию private):
|
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |