![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 02.12.2009
Сообщений: 7
|
![]()
Задание:Матрица 8*8 случайно заполнена числами 0-5.Отметить цветом(указать) путь из A[1,1] в A[8,8],такой,что сумма "пройденных" элементов минимальна.За один шаг можно ходить вниз или вправо.
Не знаю даже с чего подступиться.С заданием матрицы рандом проблем нет,а вот дальше..дальше лес,никак не сориентируюсь даже как начать основной этот "ПУТЬ".Может кто поможет и побудет путепрокладчиком?Самому интересно,как это составить... |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 18.10.2009
Сообщений: 185
|
![]()
Простейший вариант (как мне кажется, хотя возможно существуют и более прсые варианты): Составить матрицу минимальных путей.
Создаёте матрицу B размером 8x8 инициализируем B[1,1] = A[1,1] Дальше заполняем первый столбец B[1,2] = B[1,1] + A[1,2] B[1,3] = B[1,2] + A[1,3] ... B[1,8] = B[1,7] + A[1,8] Дальше цикл по всем столбцам. (i = 2..8) B[i,1] = B[i-1,1]+A[i,1] а все остальные B[i,2] = min(B[i,1],B[i-1,2])+A[i,2] B[i,3] = min(B[i,2],B[i-1,3])+A[i,3] B[i,4] = min(B[i,3],B[i-1,4])+A[i,4] ... B[i,8] = min(B[i,7],B[i-1,8])+A[i,8] после этого цикла в элементе B[8,8] будет находиться минимальный путь. Дальше чтобы получить список элементов через которые прошел этот путь. То нужно пройти по матрице B в обратном порядке из B[8,8] в B[1,1] двигаясь вверх в влево (выбирая путь по минимальным значениям B) т.е. если мы находимся в точке B[i,j] то если B[i-1,j]<B[i,j-1] то идем влево (i = i-1 ) иначе идём вверх (j = j-1) (только не забудьте дополнительно проверить i и j на равенство 1 чтобы не выйти за границы массива) Ни или можно формировать изначально матрицу начиная с B[8,8] к B[1,1] а путь искать от B[1,1] к B[8,8] Решил реализовать для истории (может кому нибудь понадобиться) Код:
На С# пишу лучше чем на русском.
"У меня правильнописание хромает. Оно хорошее, но почему-то хромает." Последний раз редактировалось val_nnm; 17.12.2011 в 17:14. |
![]() |
![]() |
![]() |
#3 |
Регистрация: 02.12.2009
Сообщений: 7
|
![]()
Спасибо!только вот как скобочки заменить на другой цвет?а то выделение в скобочках это же немного не то.
|
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 18.10.2009
Сообщений: 185
|
![]()
Ну подумайте сами немного. За вас уже и так всю программу написали. Вам осталось вставить 3 и изменить 1 или 2 строчки.
Используйте модуль crt и изменяйте цвет ("textcolor(Red);" и "textcolor(LightGray);")
На С# пишу лучше чем на русском.
"У меня правильнописание хромает. Оно хорошее, но почему-то хромает." |
![]() |
![]() |
![]() |
#5 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]() Цитата:
Ну, просто маленькое замечание. Это классическая задача на динамическое программирование. На форуме алгоритм решения был "разжёван" неоднократно: ТЫЦ |
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Указать путь в папке "Мои документы" | NZero | Общие вопросы .NET | 4 | 19.12.2010 22:49 |
Найти слова, в которых доля букв "а" и "е" минимальна. | Андрей_ка | Паскаль, Turbo Pascal, PascalABC.NET | 0 | 10.10.2010 16:56 |
подсчитать суммы элементов заданной строки и заданного столбца и определить, где сумма минимальна | lubov09 | Помощь студентам | 4 | 11.11.2009 17:02 |
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" | aleksei78 | Microsoft Office Excel | 13 | 25.08.2009 12:04 |
Правда ли что Java "Тяжелая" и все "вешает" ? | webmaster-n | Общие вопросы по Java, Java SE, Kotlin | 10 | 30.07.2009 01:22 |