![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 05.03.2018
Сообщений: 4
|
![]()
Здравствуйте
Это классическая задача дп, только в трёхмерном массиве. В нём нужно найти такой путь из левого верхнего угла в правый нижний ( из (1, 1, 1) в (m, n, t)), чтобы сумма чисел по данному пути была минимальной. Двигаться можно только вправо, вниз, либо внутрь. Думал, что решил задачу, пока не поменял массив. Проблема в том, что правильно пересчитывается только первая матрица, в других могут оставаться несколько тех же самых чисел. Смотрел решения задач в двумерном массиве, вроде, понимал, пытался что-то исправить, но безрезультатно, что-то пишу и уже сам не понимаю, что делаю. Вот код. В файле в первой строке написаны размеры, далее сам массив. Код:
4 4 3 1 4 8 2 3 10 5 1 7 6 4 5 8 3 18 17 5 1 8 16 4 3 11 9 8 3 10 14 3 20 20 8 14 4 23 3 13 8 10 8 19 16 15 29 1 17 10 6 Последний раз редактировалось xNos; 01.04.2019 в 00:08. Причина: Ошибка в формулировке |
![]() |
![]() |
![]() |
#2 |
C/C++, Java
Участник клуба
Регистрация: 28.03.2012
Сообщений: 1,680
|
![]()
Интересно, напоминает поиск кратчайшего пути в графе
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости" Сложность - враг простоты и удобства! |
![]() |
![]() |
![]() |
#3 |
Регистрация: 05.03.2018
Сообщений: 4
|
![]()
Немного прояснилась проблема. Когда считывал файл, то намудрил с измерениями и не так с ними работал, но это не главное
Программа работает, но есть неприятный нюанс: Не пересчитанные элементы появляются в массиве потому, что в этом месте происходит выбор из двух одинаковых значений. Как это исправить - я не знаю, требуется помощь Еще переписал программу, теперь пересчёт ведется с последнего элемента, чтобы потом проще было выводить путь Код:
3 4 4 1 4 8 2 3 10 5 1 7 6 4 5 8 3 18 17 5 1 8 16 4 3 11 5 8 3 10 14 3 20 20 8 14 4 23 3 13 8 10 8 19 16 15 29 1 17 10 6 Останавливается на элементе (0, 1, 3), так как там идет выбор между двумя равными значениями. Как это исправить? Нужна помощь |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Динамическое программирование | Daniiil | Visual C++ | 6 | 10.01.2016 12:48 |
Динамическое программирование. | 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 |
Динамическое программирование. | MAKEDON | Помощь студентам | 6 | 26.08.2009 14:10 |