![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| triclosan |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 515 Регистрация: 18.8.2006 Репутация: 1 Всего: 12 |
Пускай имеем строки "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 Это сообщение отредактировал(а) triclosan - 24.12.2008, 18:48 |
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
Подозрительна проверка (и логика) в строке 61. Получается, что ВСЕ строки, найденные по первому слогу, стартуют поиск со следующего элемента. Похоже таких стартов набирается несколько штук на каждый слог.
Почему бы вместо этого просто не сделать цикл в main?
|
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 15 Всего: 26 |
я бы сначала решил задачу математически, а еще лучше поискал бы готовое решение, задача-то классическая
|
|||
|
||||
| triclosan |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 515 Регистрация: 18.8.2006 Репутация: 1 Всего: 12 |
Кто подскажет можно ли узнать количество всех возможных комбинаций, без полного перебора ?
|
|||
|
||||
| 2p0i |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 14.9.2007 Репутация: нет Всего: 1 |
Можно, например, уменьшить алгоритмическую сложность с факториальной до экспоненциальной, с помощью динамического программирования, сложность будет O(N*2^N), подойдет если N <= 20. А быстрее не знаю. |
|||
|
||||
| triclosan |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 515 Регистрация: 18.8.2006 Репутация: 1 Всего: 12 |
В "боевой" задаче 97 отрезков :( . Тем не менее можно немножко подробнее про динамическое программирование? Добавлено через 1 минуту и 26 секунд Спасибо, то, что надо! |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |