Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Помогите понять смысл поставленной задачи


Автор: Sammi2186 22.11.2013, 16:40
Вводится текст-набор символов, конец - ".". Программа должна разбить его на слова (последовательности букв латинское алфавита, все другое - разделители) и сформировать несколько списков. В каждом списке информационное поле элементов содержит ссылку на очередное слово, причем последняя буква каждого слова должна совпадать с первой буквой следующего. Количество списков должно быть минимально возможным.
Подскажите, пожалуйста, что нужно сделать, каким образом? Не нужно писать код. Только идею.

Автор: tzirechnoy 22.11.2013, 22:46
Взять плоскогубцы, и провести испытание давшэму задачу. Чтобы объяснил, например, каким образом "очередное" слово (вероятно, из введённого текста) будет совпадать своей последней буквой с первой буквой следующего -- если слова вместе со своей последовательностью у нас ужэ заданы.
Ну, и другие мелочи, которые будут зависеть от ответа на первый вопрос.

PS << Когда же пытуемый впадает в беспамятство, испытание, не увлекаясь, прекратить…>>

Автор: bsa 23.11.2013, 19:56
Sammi2186, задание не полное. В нем не указано, по какому принципу делать списки. Если убрать требование о формировании нескольких списков, то программа очень просто делается:
1. Вводишь строку
2. Заводишь два указателя - один указывает на текущий символ, второй на "свободное место". Им обоим присваиваешь адрес первого символа строки.
3. Берешь символ по первому указателю, если он '\0', то конец; иначе проверяшь с помощью isalpha() и в случае, если это буква, записываешь по адресу второго указателя и инкриментируешь его. В противном случае добавляешь значение второго указателя в список...

Автор: feodorv 24.11.2013, 03:26
Цитата(bsa @  23.11.2013,  20:56 Найти цитируемый пост)
В нем не указано, по какому принципу делать списки.

Почему?
  • Цитата(Sammi2186 @  22.11.2013,  17:40 Найти цитируемый пост)
    последняя буква каждого слова должна совпадать с первой буквой следующего
     - классические "Города"
  • Цитата(Sammi2186 @  22.11.2013,  17:40 Найти цитируемый пост)
    Количество списков должно быть минимально возможным.
Конечно, может получиться так, что в рамках одного набора слов можно составить несколько вариантов списков, но нужен-то хотя бы один вариант...


Автор: baldina 24.11.2013, 15:34
составляем граф связей слов. теперь надо найти все непересекающиеся пути так, что бы они покрывали все вершины и число путей было минимальным.
число путей не может быть меньше числа несвязных компонент.
походу это NP-полная задача.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)