Viktor
картинку правда б получше можно было нарисовать, ну да ладно
Viktor
Я пока думаю, N*M сразу приходит, грубо говоря брут форс
ахаха. всем б такой брутфорс 😄 мне нравится ваш настрой. это точно в гуголь надо.
Evgeniy
А брутфорсом тут TLE будет
Evgeniy
А, нет. Тут ограничение в 1000 символов
Порридж В Ко-ливинге
Ребята
Порридж В Ко-ливинге
Кто-нибудь решил через матрицу?
Viktor
Я решил через матрицу, но не заполнял в цикле, а через рекурсию.
Viktor
Так проще показалось, хотя может и нет.
Порридж В Ко-ливинге
А как вы матрицу делали?
Viktor
vector<vector<int>> dp(n, vector<int>(m)) или не про это речь?
Viktor
т.е. как в прямом смысле или в каком 🙂
Порридж В Ко-ливинге
Сверху буквы первого слова, слева второго, и где сходится там 1?
Порридж В Ко-ливинге
Щас скину
Порридж В Ко-ливинге
. . g h b r g c h 0 1 0000 c 00 000 1 b 00 1 000 g 1 0 00 10 c 00 000 1 r 00 0 100 c 00 000 1 b 00 1 000 h 0 1 0000
Порридж В Ко-ливинге
да, именно так
Я тоже до этого дошел
Порридж В Ко-ливинге
А как его обойти, не понимаю(
Порридж В Ко-ливинге
Уже полчаса сижу
Порридж В Ко-ливинге
Глазами все нашел
Порридж В Ко-ливинге
Понимаю что надо по диагонали прыгать если 1 нашел
Viktor
ну вот я обходил рекурсивно, прямо по определению
Порридж В Ко-ливинге
А вот как что складывать чтобы результат получить – хз(
Порридж В Ко-ливинге
Порридж В Ко-ливинге
Ну, что делали если встречали 1?
Viktor
ща, прямо из второй подсказки делаю — если буковки на i и j позициях равны, то делаю 1 + dp[i + 1][j + 1], по диагонали идём, если не равны то максимум из dp[i + 1][j] и dp[i][j + 1]
Viktor
т.е. выбрать максимум между вниз и направо
Порридж В Ко-ливинге
Ой...
Порридж В Ко-ливинге
А я и забыл про подсказки
Порридж В Ко-ливинге
Спасибо, сейчас попробую
Viktor
Ещё там матёрые литкодеры пишут, что есть вариант с одномерным dp
Viktor
не для средних умов говорят, поэтому я решил не пробовать 😄
Порридж В Ко-ливинге
Ещё там матёрые литкодеры пишут, что есть вариант с одномерным dp
Ну предыдущую, где тропинку найти тоже вроде одномерным можно было
Порридж В Ко-ливинге
Но что-то голова перегреется
Viktor
Можно, нужно массив в две строки
Матёрый литкодер детектед 🙂
Порридж В Ко-ливинге
Evgeniy
Матёрый литкодер детектед 🙂
Да не. У меня даже 200 задач нет ещё
Порридж В Ко-ливинге
Масив с двумя масивами?
Evgeniy
да, двумерный
Evgeniy
но маленький
Порридж В Ко-ливинге
А, ну это да
Порридж В Ко-ливинге
Там же выше строчки отпадают
Viktor
Знаю я одного гуглера из Варшавы, который решил 500 задач и устроившись спрашивал у других чуваков, которые крутили пальцев у виска, мол, мы и 200 не решили 😄
Evgeniy
dp[2][len2]
Viktor
Зависит все-таки от того насколько глубоко копать каждую задачку, там ж можно со всем сторон рассматривать.
Viktor
И ещё от удачи в значительной стенени 😄
Порридж В Ко-ливинге
но маленький
Ну на самом деле это не имеет значени так то, поидее память просто в sqrt превратиться
Порридж В Ко-ливинге
Кстати, объясните лентяю, sqrtN это же logN?
Evgeniy
sqrt это корень квадратный
Порридж В Ко-ливинге
И ещё от удачи в значительной стенени 😄
Мне кажется не удача, а склад ума, т.к. предыдущую задачу за рекрное время решил, а над это танцую как из племени
Порридж В Ко-ливинге
sqrt это корень квадратный
Я это знаю, я про сложность
Порридж В Ко-ливинге
@vitkarpov выбает сложность O(sqrtN)?
Evgeniy
Зависит все-таки от того насколько глубоко копать каждую задачку, там ж можно со всем сторон рассматривать.
На литкоде чем хорошо, есть задачи с усложнёнными версиями. Например, Unique Paths
Viktor
Кстати, объясните лентяю, sqrtN это же logN?
ну, не совсем. они рядом, но корень всё-таки быстрее логарифма растёт.
Viktor
@vitkarpov выбает сложность O(sqrtN)?
Конечно. В решете Эратосфена например есть что-то типа n * sqrt(n)
Viktor
Ну можно найти и другие задачи.
Viktor
это нормально как раз.
Evgeniy
Читал, кстати, твою статью про простые числа, где решето используется
Evgeniy
Мне понравилось. Разные варианты рассмотрел, и подробно.
Viktor
Стараюсь придерживаться подхода от простого к сложному, в смысле чтобы и брутфорс был и потом усложнение постепенное.
Viktor
Оно так и на реальном собесе должно идти, по идее, если ты решаешь незнакомую задачу.
Viktor
Если знакомую, все равно надо сделать вид, что «пытаешься решить»
Viktor
😄
Viktor
В идеале, надо рассказать несколько вариантов, словами просто, сравнить, выбрать оптимальный и уже писать.
Evgeniy
Если знакомую, все равно надо сделать вид, что «пытаешься решить»
Лишь бы не подумали, что ты только брутфорсом и можешь решать. И собеседование не закончили на этом)
Порридж В Ко-ливинге
Да, совсем чуть чуть
Порридж В Ко-ливинге
Мне кажется часто округляют
Порридж В Ко-ливинге
Как ни как действия со степенями
Порридж В Ко-ливинге
Обратные
Порридж В Ко-ливинге
Обратные
(Ну, в рациональном/комплексном поле)
Viktor
Лишь бы не подумали, что ты только брутфорсом и можешь решать. И собеседование не закончили на этом)
ну не, ты ж рассуждаешь и приходишь к оптимальному решению. вот если ты начинаешь писать брутфорс и говоришь «лучше решить не можно!»
Viktor
то ну такое себе… 🙂