| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Алгоритм нахождения последовательностей |
| Автор: triclosan 24.12.2008, 18:46 | ||
| Пускай имеем строки "HE", "LI", "BE", "NE", "NA", "CA", "EU", "BI", "AC", "IN". Задача найти все ряды, подчиняющиеся условию: вторая бува первой строки должна совподать с первой буквой второй. Строки двухбуквенные, уникальные. В одном ряду встречаться одинаковые не должны. Пытаюсь рекурсивно обходить, и почему-то получаю дубли. Не пойму почему они появляются:
Выдает: HE EU LI IN NE EU BE EU NE EU NA AC CA CA AC EU BI IN NE EU AC CA IN NE EU IN NA AC CA BI IN NA AC CA AC CA IN NE EU IN NA AC CA LI IN NA AC CA BE EU NE EU NA AC CA CA AC EU BI IN NE EU AC CA IN NE EU IN NA AC CA BI IN NA AC CA AC CA IN NE EU IN NA AC CA |
| Автор: xvr 24.12.2008, 19:33 | ||
| Подозрительна проверка (и логика) в строке 61. Получается, что ВСЕ строки, найденные по первому слогу, стартуют поиск со следующего элемента. Похоже таких стартов набирается несколько штук на каждый слог. Почему бы вместо этого просто не сделать цикл в main?
|
| Автор: GoldFinch 24.12.2008, 19:58 |
| я бы сначала решил задачу математически, а еще лучше поискал бы готовое решение, задача-то классическая |
| Автор: triclosan 25.12.2008, 17:08 |
| Кто подскажет можно ли узнать количество всех возможных комбинаций, без полного перебора ? |
| Автор: triclosan 26.12.2008, 03:45 | ||
В "боевой" задаче 97 отрезков :( . Тем не менее можно немножко подробнее про динамическое программирование? Добавлено через 1 минуту и 26 секунд Спасибо, то, что надо! |