Пришло время помогать быдлостудентам с задачами, быдлостуденты сами ничего не сделают Привет, анон, есть две задачи, никак не могу придумать
эффективный алгоритм для их решения. Собственно, задачи:
1)Имеется заданная пара длинных строк S и T (> 50000 символов). Необходимо
составить строку T из подстрок строки S так, чтобы количество использованных
подстрок S было минимальным. Подстроки строки S могут быть использованы несколько
раз и могут "перекрываться".
Пример:
S = "abadefghijk"
T = "jkadbaefgab"
=> T = "jk" + "ad" + "ba" + "efg" + "ab"
2)В заданной последовательности элементов найти подпоследовательность максимальной
длины, обладающую следующим свойством: она должна быть разложима на две
непересекающиеся последовательности - неубывающую и невозрастающую.
Пример:
S = "11231933921"
^^^^ ^^^^^^ Подходящая подпоследовательность (элементы выделены символом ^):
"1123933921" ~ "112 9 9 " - неубывающая
" 3 33 21" - невозрастающая В принципе первую можно было бы решить и в лоб, последовательно деля строку T на подстроки и проверяя, являются ли они подстроками S. Но не зря же в условии задан такой большой размер строк. А вторую я вообще не представляю, как решать, даже неэффективно.
Код не нужен, мы все равно еще многое не прошли, и я могу ничего не понять (классы, например, еще даже не начали). Просто алгоритм, а я уж реализую. Заранее спасибо.