Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Задачка на интервью / 17 сообщений из 17, страница 1 из 1
26.06.2014, 06:14
    #38680433
buuza
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачка на интервью
Рад снов писать сюда, но уже не за помощью, а, возможно, для помощи. Например задачка для устройства на работу, таковых много но именно эта мне понравилась:

1 - Треугопник

Задание:
Нужно пройтись по треугольнику и выбрать максимальное значение в строке, которое находится рядом с максимальным значением с предыдущей строки, например:

___5
__9 6
_4 6 8
0 7 1 5

5 + 9 + 6 + 7 = 27.

Нужно написать программу которое находит сумму всех макс значений в каждой из строк смежной к предыдущему в файле triangle.txt (см ссылку).

файл txt
ссылка на само задание

спасибо за внимание
п.с. сам сижу решаю)
...
Рейтинг: 0 / 0
26.06.2014, 08:24
    #38680459
buuza
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачка на интервью
решение, кому будет интересно

тыц
...
Рейтинг: 0 / 0
26.06.2014, 12:36
    #38680709
скукотища
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачка на интервью
buuza,
немного изменим входные данные (третья строка, третье значене)
59 64 6 1000 7 1 5
по твоему агоритму максимаьная сумма
5 + 9 + 6 + 7 = 27,
в действительности -
5 + 6 + 100 + 5 = 116
...
Рейтинг: 0 / 0
26.06.2014, 13:22
    #38680771
Програмёр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачка на интервью
скукотищаbuuza,
немного изменим входные данные (третья строка, третье значене)
59 64 6 1000 7 1 5
по твоему агоритму максимаьная сумма
5 + 9 + 6 + 7 = 27,
в действительности -
5 + 6 + 100 + 5 = 116

ошибаешься, автор прав... Выйдет 27 :)
...
Рейтинг: 0 / 0
26.06.2014, 13:33
    #38680784
Програмёр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачка на интервью
buuza,

задачка очень простая и скучная... Было бы интереснее, если надо было бы определить самый "дорогой" путь сверху вниз, когда выбор самого большого числа рядом с предыдущим самым большим не является оптимальным :)

А так... задача на 5 минут.
...
Рейтинг: 0 / 0
26.06.2014, 14:43
    #38680887
скукотища
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачка на интервью
> Програмёр,
> ошибаешься, автор прав... Выйдет 27 :)

В первом посте автора ссылка на задание.
...
Рейтинг: 0 / 0
26.06.2014, 15:09
    #38680930
alex564657498765453
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачка на интервью
в задании написано ведь чотко, на строке Н+1 ищем не максимум, а максимальное среди чисел, которые "прикасаються" к строке Н

задачка в любом случае лёгка, достаточно понять,

вначале позиция максимального 0 верхняя строка - один елемент в строке.
на второй надо взять большее среди чесел с индексами 0 и 1


если на строке Н (из Н чисел, ввыбранное имеет индекс С)
то на строке Н+1 надо взять большее среди чисел с индексами С С+1
поєтому взять решение ТС, и вместо поиска максимального значения в очередной строке, искать большее среди двух. на каждой итерации цикла, запоминать какой индекс был у выбраного на этой строке.
...
Рейтинг: 0 / 0
26.06.2014, 15:38
    #38680970
скукотища
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачка на интервью
alex564657498765453,
> в задании написано ведь чотко..

"Задания не читал, но осуждаю!" (с)
В задании чётко написано - " find the maximum total from top to bottom".
semi OFF
> ...
> если на строке Н (из Н чисел, ввыбранное имеет индекс С)
> то на строке Н+1 надо взять большее среди чисел с индексами С С+1

? Если на строке Н+1 числа с индексами С,С+1 равны между собой, то на строке Н+2 надо ...


ЗЫ: ... а на строке Н+2 равны между собой числа с индексами С,С+2 ... и т.д.

ЗЗЫ:
> ...
> поєтому взять решение ТС, и вместо поиска максимального значения в очередной строке, искать большее среди двух.
> на каждой итерации цикла, запоминать какой индекс был у выбраного на этой строке.

Ты хоть для приличия решение ТС посмотри
...
Рейтинг: 0 / 0
26.06.2014, 16:50
    #38681051
alex564657498765453
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачка на интервью
скукотищаalex564657498765453,
> в задании написано ведь чотко..

"Задания не читал, но осуждаю!" (с)
В задании чётко написано - " find the maximum total from top to bottom".
semi OFF
> ...
> если на строке Н (из Н чисел, ввыбранное имеет индекс С)
> то на строке Н+1 надо взять большее среди чисел с индексами С С+1

? Если на строке Н+1 числа с индексами С,С+1 равны между собой, то на строке Н+2 надо ...


ЗЫ: ... а на строке Н+2 равны между собой числа с индексами С,С+2 ... и т.д.

ЗЗЫ:
> ...
> поєтому взять решение ТС, и вместо поиска максимального значения в очередной строке, искать большее среди двух.
> на каждой итерации цикла, запоминать какой индекс был у выбраного на этой строке.

Ты хоть для приличия решение ТС посмотри


:) Не внимательный ты. прочитал бы внимательно что я написал, увидел бы что я не читал предложенное решение, оно именно такое как я расписал. :) сделал вывод о ошибке в нём на основании поста критики выше :)
...
Рейтинг: 0 / 0
26.06.2014, 17:27
    #38681101
Програмёр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачка на интервью
скукотища> Програмёр,
> ошибаешься, автор прав... Выйдет 27 :)

В первом посте автора ссылка на задание.

Да... уже прочитал )) автор задачу неправильно перевёл... Там реально написано тотально максимально возможную сумму...

А значит эта задача сводится к таблице весов (не помню как точно метод называется). Ну типа как в школе учили, поиск пути, по которому можно собрать максимум монеток, учитывая что двигаться можно только вниз или вправо. В нашем случае это условие меняется на "только на соседнюю нижнюю ячейку" (ну или точнее только вниз или вниз-вправо, если треугольник превратить в половину квадрата как уже сделали выше).
...
Рейтинг: 0 / 0
26.06.2014, 18:18
    #38681163
alex564657498765453
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачка на интервью
Програмёр,


так можно без таблицы весов (незнаю что это) но чувсвую не быстрее будет чем

ити снизу.

берём нижнюю строку и одну выше
5 7 1
1 2 33 4

и меняем верхнюю на
5+2=7 7+33=40 1+33 = 34

логика какая, если дойдя по оптимальному пути до предпоследней строки мы оказались на цифре 5, то дальше оптимальный путь 100 тысяч пудов - 2, ... если в 7 - дальше оптимум это 33, как и для 1

нам же не надо путь ещо запомнить, важно результат только.
и так снизу идя вверх получим искомое.

мдя... интересная задачка.
...
Рейтинг: 0 / 0
26.06.2014, 18:35
    #38681176
Програмёр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачка на интервью
alex564657498765453,

неа... задачка нифига не интересная)) интереснее чем изначально, но всё же очень простая... Не понял как ты предлагаешь сделать, но мой вариант (предложенный мной... сам он давным давно уже применяется) предполагает проход сверху вниз с суммированием нынешней ячейки со следующей и записью в неё значения, если оно больше уже записанного ранее.

То есть на предложенном варианте:

5 - тут всё понятно )) начинаем с пяти... потом идём вниз и вниз-вправо и записываем в них сумму с пятёркой
14 11 - теперь пойдём из 14, а потом из 11 по очереди
(18 20 __) (__ 17 19) - итак, у одной ячейки 2 значения, выбираем большее (18 20 19) - повторяем процедуру со следующим рядом
(18 25 __ __) (__ 27 21 __) (__ __ 20 24) => (18 27 21 24)

учитывая что ряд последний - мы выбираем самое большое из чисел и получаем ответ - 27


Я же говорю, такую задачку в школе решали на паскале уйму лет назад (лично я решал её лет 7 назад, может больше... не помню в каком классе это было) :)
...
Рейтинг: 0 / 0
26.06.2014, 18:40
    #38681181
Програмёр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачка на интервью
задачки . Данный случай тот же, что и в задачке "Путь максимальной стоимости" :)
...
Рейтинг: 0 / 0
26.06.2014, 18:56
    #38681200
alex564657498765453
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачка на интервью
так оба решения идентичны :) ну почти

ты сладываешь, а потом смотришь какая сумма лучше

а я смотрю какое слагаемое лучше и его прибавляю.. а в остальном идентичный набор действий.
...
Рейтинг: 0 / 0
27.06.2014, 10:36
    #38681533
Програмёр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачка на интервью
alex564657498765453так оба решения идентичны :) ну почти

ты сладываешь, а потом смотришь какая сумма лучше

а я смотрю какое слагаемое лучше и его прибавляю.. а в остальном идентичный набор действий.

убедил... :) при детальном рассмотрении алгоритмов понятны что суть идентична. Конечно, было бы легче понять, будь пирамидка полная (хотя бы ярусов в 4-5) :)

просто я иду сверху-вниз, а ты по сути снизу-вверх по тем же правилам. В случае большого массива данных, который невозможно весь запомнить разом - мой вариант удачнее.

В ином случае - твой использует меньше действий, так как при таком подходе тебе не надо будет в конце искать самое большое число в ряду, так как у тебя оно будет одно - вершина пирамиды, где будет записана самая большая сумма :)
...
Рейтинг: 0 / 0
27.06.2014, 12:17
    #38681697
alex564657498765453
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачка на интервью
Програмёрalex564657498765453так оба решения идентичны :) ну почти

ты сладываешь, а потом смотришь какая сумма лучше

а я смотрю какое слагаемое лучше и его прибавляю.. а в остальном идентичный набор действий.

убедил... :) при детальном рассмотрении алгоритмов понятны что суть идентична. Конечно, было бы легче понять, будь пирамидка полная (хотя бы ярусов в 4-5) :)

просто я иду сверху-вниз, а ты по сути снизу-вверх по тем же правилам. В случае большого массива данных, который невозможно весь запомнить разом - мой вариант удачнее.

В ином случае - твой использует меньше действий, так как при таком подходе тебе не надо будет в конце искать самое большое число в ряду, так как у тебя оно будет одно - вершина пирамиды, где будет записана самая большая сумма :)

:) данные можно читать и частями. запись в файле можно было сделть и наоборот :) или читать сконца.

чтение по строкам сначала файла

читать первый блок (размер кластера) 4кб
ищем конец строки, выдали строку, потом опять ищем и пока не сможем найти
читаем ещо кусок, дописываем к остатку первого куска, и опять выдаём построчно,

чтение построчно с конца, тоже самое всё :)

я пошол с низу, ибо в подобных задачах на редеве, есть такая фигня как альфа бета отсечение, когда можно какието ветки сразу без расмотрения отсекать, а с верху любые оптимизации, это приближонные(угадывания)

поэтому если точно и побыстрее, то при проходе снизу находяться решения.

в даном случае, без разницы, но я на автомате пошол снизу.
...
Рейтинг: 0 / 0
28.06.2014, 06:36
    #38682497
buuza
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачка на интервью
не тратьте время зря, идите сюда и тратьте с пользой ---> http://www.topcoder.com/challenges/
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Задачка на интервью / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]