| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > Перебрать все цепочки языка в заданном диапазоне |
| Автор: Alexey91 16.10.2011, 08:56 |
| Здравствуйте! Есть язык, который задается множеством {0,1} Как можно перебрать все возможные элементы множества в заданном диапазоне Например, диапазон от 2 до 3 включительно 00,01,10,11 000,001,010,011,100,101,110,111 Проблема в том, что язык может состоять из произвольных цепочек, т.е. {a,b,0}, {d,e,1} |
| Автор: math64 16.10.2011, 09:26 |
| Перебирай N = количество букв в слове Для I = 1..N Перебирай все возможные буквы на I-м месте Проверь полученное слово на допустимость в языке |
| Автор: Alexey91 16.10.2011, 09:34 |
| math64, мне не понятно как перебирать Хорошо для {0,1} Минимальная длина слова N=2. Начинаем цикл. Первая позиция (I=1). Выбираем 0 или 1. Выбрали 0. На второй тоже 0. Получили 00 Но в данном случае я выбираю сам ))), а не программа Как сделать так, чтобы программа сама догадывалась, что следующее будет, например, 01 |
| Автор: Alexey91 16.10.2011, 10:20 | ||
| Я придумал с помощью рекурсии Например N=3 (длина цепочек 3)
|
| Автор: math64 16.10.2011, 13:20 | ||
|
| Автор: Alexey91 16.10.2011, 16:13 |
| math64, зачем вы пишете const перед переменными? |
| Автор: math64 16.10.2011, 19:41 | ||
Потому что они константы - чтобы защитить от случайного изменения и чтобы компилятор мог выполнить оптимизацию. Если нужна возможность задавать алфавит программно - нужно соответственно модифицировать алгоритм, например, поместить всё в класс (защитой будет помещение их в секцию private):
|