![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы
![]() |
Поиск в этой теме
![]() |
![]() |
#1 |
Пользователь
Регистрация: 27.02.2010
Сообщений: 18
|
![]()
Треугольник. На рисунке изображен треугольник из чисел. Напишите программу, которая вычисляет наибольшую сумму чисел, рассположенных на пути, начинающемся в верхней точке треугольника и заканчивающемся на основании треугольника.
(рис) Код:
Число строк в тругольнике >1 и <=100. Треугольник составлен из целых чисел от 0 до 99. Решение. Это типичная задача на метод динамического программирования. Пусть A[i,j] озночает j-ое число в i-ой строке треугольника, а S[i,j] наибольшую сумму чисел на пути от вершины треугольника до этого числа. Очевидны соотношения: S[1,1]=A[1,1] S[i,j]=max(S[i-1,j],[S[i-1,j-1])+A[i,j],(1<= j<=N,j>1) Пологаем, что числа S[i,0] и S[i,i+1] (1<= i<=N) равны нулю. Ответ на задачу можно узнать, вычислив Max (S[N,j]) 1<=j<=N Для приведенного в условии задачи примера числа S[i,j] будут такими (максимальное число в последней строке является ответом): Код:
P.S: Рисунок должен быть как пирамида. (тут я не смог так делать) Последний раз редактировалось Serge_Bliznykov; 28.02.2013 в 21:22. Причина: правка |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
или я что-то не понял, или одно из двух.
Зачем Вам полный перебор, если Вы уже имеете решение (ведь заполненная матрица S и является решением!) находите максимальное значение в строке основания: S[n, maxInd] Например, для вашей матрицы maxInd будет 2. S[5, 2] у него есть две точки, из которых можно в данную точку прийти S[4, 1] и S[4,2] - берём max(20, 25) = 25 = S[4,2] в неё можно прийти из S[3,1] и S[3,2] - берём max( 18, 16 ) = 18 = S[3,1] в неё можно попасть только из S[2,1] в неё можно попасть только из S[1,1] записываем полученный путь S[1,1] S[2,1] S[3,1] S[4,2] S[5,2] этот же путь в исходной матрице A[1,1] A[2,1] A[3,1] A[4,2] A[5,2] 7 3 8 7 5 7 + 3 + 8 + 7 + 5 = 30 |
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 27.02.2010
Сообщений: 18
|
![]()
на паскале как будет? помогите
|
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
чем помочь? Написать полностью за Вас?!?! Так это не помощь называется!
Представьте, пригласили Вы соседа, ну, например, огород Вам помочь вскопать. Он копает, Вы сидите, наблюдаете... Если он спросит, почему Вы сидите, не копаете ваш же огород, Вы скажете, что Вы копать не умеете, поэтому скромно посидите в сторонке, а он пусть Вам "помогает"... Аналогия, надеюсь, понятна? Ну и, во-первых, это будет "медвежья" услуга (Вы же после этого Паскаль лучше знать не станете!) а во-вторых, не думаю, что кто-то будет бесплатно с нуля писать Вам программу (а потом ещё и "разжёвывать", как же она работает)... Начните делать, обеспечьте заполнение пирамиды начальными значениями, ПОПЫТАЙТЕСЬ (хотя бы) заполнить структуру S (формулы заполнения у Вас же уже есть) и Вам обязательно помогут. Успехов в обучении... |
![]() |
![]() |
![]() |
#5 |
Регистрация: 13.02.2013
Сообщений: 5
|
![]() |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Динамическое программирование. | IllidanStormrage | Помощь студентам | 0 | 06.11.2011 19:03 |
динамическое программирование | stefan0202 | Паскаль, Turbo Pascal, PascalABC.NET | 3 | 07.02.2011 22:05 |
Динамическое программирование | Daniya.ru | Общие вопросы .NET | 2 | 19.12.2010 11:40 |
Динамическое программирование | joey_ramone | Паскаль, Turbo Pascal, PascalABC.NET | 0 | 23.04.2010 13:51 |
Динамическое программирование. | MAKEDON | Помощь студентам | 6 | 26.08.2009 14:10 |