![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
lamber |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 143 Регистрация: 20.12.2008 Репутация: нет Всего: нет |
Столкнулся с нетривиальной задачей (для меня во всяком случае). Ну не будем многословным.
Дана строка: I have a s{bad,terrible,doubt} feelings about this s{place,face,house}. Как видим здесь есть макрос s{} в нем через запятую перечисляются разные варианты. Внимание вопрос как можно собрать в файле все возможные варианты предложения без повторений, если количество макросов в строке не известно. |
|||
|
||||
alexvs11 |
|
|||
hell is here ![]() ![]() Профиль Группа: Участник Сообщений: 518 Регистрация: 21.8.2010 Репутация: 6 Всего: 10 |
как их количество может быть не известным, где что задается?
|
|||
|
||||
lamber |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 143 Регистрация: 20.12.2008 Репутация: нет Всего: нет |
Строка с макросами берется из файла или вводится пользователем.
|
|||
|
||||
htzg |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 150 Регистрация: 17.4.2010 Репутация: нет Всего: нет |
Это задача из серии когда не известно кол-во вложенный циклов
поможет виртуальная машина паскаля... (по-моему так называется) заводите два массива цифр ( один лимиты, другой счетчики ) с размером равным кол-ву макросов... лимиты выставляете по кол-ву слов в соответствующем макросе (или плюс один, если слова из этого макроса может не быть)... потом начинаете перебирать младший счетчик, как достиг лимита обнуляете и увеличиваете на один следующий счетчик, когда он в свою очередь достигнит лимита, также обнуляете и к следующий на один и т.д. на каждой итерации теперь можно формировать строку, использую счетчики как индексы слова в макросе. п.с.: из макросов нужно сформировать массивы со словами Добавлено через 3 минуты и 13 секунд http://liveworkspace.org/code/de3bf0578deb...00f066dd7bf4365 вот пример только здесь вместо слов в макросе перебираются символы |
|||
|
||||
lamber |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 143 Регистрация: 20.12.2008 Репутация: нет Всего: нет |
Блин что -то щас "синий" не могу разобрать, сможешь привести более конкретный пример, по задаче в коде.
ЗЫ Мож с утра разберу код что скинул хз ))) |
|||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
lamber
Рекурсией. Как-то так.
http://liveworkspace.org/code/d59a9f84d53d...1540956d64c6cf3 Это сообщение отредактировал(а) azesmcar - 12.1.2011, 08:59 |
|||
|
||||
миг |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 158 Регистрация: 15.9.2008 Репутация: нет Всего: 1 |
из серии пустите переночевать, а то пить хочется и кушать)) --------------------
Oaks may fall when reeds stand the storm. |
|||
|
||||
lamber |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 143 Регистрация: 20.12.2008 Репутация: нет Всего: нет |
2миг
Сам то понял что сказал :? |
|||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
lamber
Тему то что забросил? Пометь если вопрос решен (а он решен?). |
|||
|
||||
lamber |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 143 Регистрация: 20.12.2008 Репутация: нет Всего: нет |
2azesmcar
Вот щас сижу разбираюсь (последние два дня времени не было). Пытаюсь разобратся с алгоритмом который привел htzg, но пока безуспешно (моск не может адаптировать его под свою задачу, видимо слишеом маленький xD ). Твой вариант не очень подходит, с boost я не в товарищах, да и не хотелось бы тянуть такую либу для решения такой задачи. Вообщем тема открыта, если найду качественное решение вопроса, выложу код. Включаемся господа, одна голова хорошо, а с несколькими можно и выпить))) Это сообщение отредактировал(а) lamber - 14.1.2011, 22:03 |
|||
|
||||
lamber |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 143 Регистрация: 20.12.2008 Репутация: нет Всего: нет |
2htzq
Прекланяю колено алгоритм реально крут, видно я слишком туп разбирался около 4 часов с ним, хотя как видно в нем всего "пару строк" кода. ниже работающий код решающий поставленную задачу. Объявялеются особые благодарности htzq и azesmcar
Тему можно закрывать. Это сообщение отредактировал(а) lamber - 15.1.2011, 02:18 |
|||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
||||
|
||||
htzg |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 150 Регистрация: 17.4.2010 Репутация: нет Всего: нет |
||||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |