Составить цепочку слов

  • 24
  • Недоступна
В методе main считай с консоли имя файла, который содержит слова, разделенные пробелом. В методе getLine используя StringBuilder расставь все слова в таком порядке, чтобы последняя буква данного слова совпадала с первой буквой следующего не учитывая регистр. Каждое слово должно участвовать 1 раз.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (330)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Fors Major 28 уровень, Кишинев
вчера, 08:12
Я задачу не сдал(валик не принял) Но решал её не так как советуют в коментах. Если допустить что абсолютно все слова из исходного списка могут (и должны!) быть включены в результат (лишних слов нет). То это означает что на каждую первую букву А есть столько же последних букв А и так далее. Если первых буква Абольше на 1 чем последних, то слово начинающееся на А должно быть первым и никаким иначе. Если Последних букв Б на 1 больше чем первых букв Б то оно должно быть последним и никаким иначе. Если количество всех первых равно такому же количеству последних, то список слов может быть свернут в кольцо, (как в нашем примере) и первое слово можно взять любое, но после этого задача опять сводится к предыдущей. Если я не прав, укажите мне где.
Денис 24 уровень
вторник, 04:40
Через рекурсии достаточно просто. Без заумных алгоритмов и выполняющий все условия задачи. Ну и заслуженная награда
Dmitry Kharchenko 24 уровень, Москва
23 октября, 08:34
Первая задача за все время, которую я пропускаю. Просто не выходит понять, как это вообще можно сделать. Не пришло понимание за день. Очень просто решается с теми данными, что предоставляются в условии, но если одно из слов может уничтожить всю цепочку- все, провал. Как прогонять через рекурсию до конца не допер, ведь все изменения в массивах в методе сохраняются, и новый круг работает с уже измененными массивами, что мне никак не подходит. Вобщем, после таких задач понимаешь, что сюда надо уже приходить программистом с опытом, чтобы гавном себя не чувствовать.
Alniterox 24 уровень, Квакенбург
16 октября, 17:56
Решил с третей попытки. Изначально понял условие так, что все слова в файле обязательно должны образовать цепочку. Из-за этой фразы: "Считай, что абсолютно все слова из исходного списка могут (и должны!) быть включены в результат (лишних слов нет)." Как оказалось, нужно просто найти максимально возможную последовательность и вывести только участвующие в ней слова. Те которые не подошли выводить не нужно.
Нюша Кристалова 24 уровень, Кишинев
15 октября, 12:38
22 попытки 2-ое суток. Лучше бы вообще пример вывода не подставляли. 😭
Alniterox 24 уровень, Квакенбург
16 октября, 19:37
А тут так всегда. Я уже давно примерам не верю. Вот написал код, их пример вывелся, а валидатор такой: "Пссс, кодер, а подводных камней погрызть не хочешь? Нет?".
Alukard Vampire hunter в The HellsingExpert
4 октября, 14:59
Решил за 62 строки. GitHub Моей ошибкой была невнимательность. Алгоритм в принципе был верен, но ошибка по последнему пункту была из-за того что я напрямую передавал слова в getLine(), а не массивом слов.
wan-derer.ru 31 уровень, Москва
21 сентября, 08:26
Пришла дикая идея сделать случайный поиск, т.е.: - берём первое случайное слово, ставим на первое место; - берём следующее случайное слово, если оно соответствует условию - ставим; и т.д. Если не находим - начинаем сначала. Интересно, сколько будет считать? :) Как думаете, пробовать или нет? :)
Ярослав 26 уровень, Полтава
6 октября, 12:21
Я пробовал, все работало, но валидатор не принимал т.к. скорость алгоритма n!
Zhan Peskov 29 уровень, Москва
19 сентября, 23:47
еще одна красивая задачка решается через рекурсию буду рад поучиться у того кто предложит код лаконичнее и быстрее
Дмитрий Пиминов 26 уровень, Усть-Илимск
2 сентября, 14:54
У Александра Бутакова подсмотрел класс Word. Первое слово добавил в список. Затем остальные слова перебирал в цикле и если его можно прилепить к началу или концу прилепляем, в противном случае перекладываем в другой лист, в который заглядываем каждый раз и если он не пустой проходимся по словам из него и пробуем также каждое слово прилепить к началу или концу первого листа. Если удается слово из второго листа удаляем. Решение не идеальное, но сдал с первой попытки.
Maxim Romanov 39 уровень, Москва
15 августа, 09:43
Предпоследний тест: "Все слова переданные в метод getLine должны быть включены в результирующую строку." Валик не пропускал из-за пробела в конце результирующей строки.