|
392 / 284 / 53
Регистрация: 26.12.2009
Сообщений: 874
|
|
Маршрут24.10.2010, 15:38. Показов 4030. Ответов 18
Метки нет (Все метки)
массив 10х10 заполнено числами. Начало маршрута в левом нижнем углу. Конец - в правом верхем. Можна двигаться только прямо или вправо. Найти такой маршрут, чтобы сума чисел в ячейках была максимальной.
0
|
|
| 24.10.2010, 15:38 | |
|
Ответы с готовыми решениями:
18
Маршрут Маршрут в таблице Маршрут Bus |
|
392 / 284 / 53
Регистрация: 26.12.2009
Сообщений: 874
|
|
| 24.10.2010, 15:53 [ТС] | |
|
нужно вывести маршрут в формате :RFFRFFRRRRRRRFFFFF
R - шаг вправо F - шаг вперед
0
|
|
|
1563 / 1041 / 94
Регистрация: 17.04.2009
Сообщений: 2,995
|
||||||
| 24.10.2010, 16:15 | ||||||
1
|
||||||
|
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
|
|
| 24.10.2010, 16:21 | |
|
KuKu, Ничего подобного. Вот Вам контрпример: вся матрица заполнена 1. Левый край и верхний край заполнен 2. А в нижнем правом углу значение 1000000. Ваш алгоритм не найдет нужного ответа.
Mayonez, С динамическим программированием знакомы?
0
|
|
|
1563 / 1041 / 94
Регистрация: 17.04.2009
Сообщений: 2,995
|
|
| 24.10.2010, 16:27 | |
|
valeriikozlov, Вродь написал, что он не универсальный. У мя такое чувство, глядя на саму матрицу, что там не надо искать путь к выходу специально как и максимальную сумму, а это уже заложено в матрице.
0
|
|
|
392 / 284 / 53
Регистрация: 26.12.2009
Сообщений: 874
|
||
| 24.10.2010, 18:23 [ТС] | ||
![]() Добавлено через 59 минут Можно что-то поконкретнее...
0
|
||
|
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
| 24.10.2010, 18:50 | |
|
Уже была недавно подобная тема, я там посоветовал обратить внимание на алгоритм поиска кратчайшего пути между парой вершин во взвешенно орграфе.
1
|
|
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
| 24.10.2010, 19:07 | |
|
silent_1991, Ага. Это Дейкстры или Флойда-Уоршалла который кажется? Вроде как оба подойдут
1
|
|
|
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
| 24.10.2010, 19:14 | |
|
Флойда - он находит пути между всеми вершинами... А Дейкстра ищет между одной и всеми остальными. А тут другой немного нужен, который путь между парой ищет (у него незапоминающиеся фамилии))) )
Добавлено через 1 минуту Хотя конечно можно любой использовать, потом просто выбрать нужный путь и всё. Но тогда куча ненужных расчётов.
1
|
|
|
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
|
|
| 24.10.2010, 23:21 | |
|
Mayonez, В общем эту задачу можно сделать так:
В один массив считываем данные (такие как у Вас на картинке). Создаем второй массив таким же размером. В этом массиве (после того как мы его заполним) в каждой ячейке будет хранится максимальное значение, которое можно для этой ячейки достигнуть, двигаясь только прямо или вправо с нижнего левого угла. Теперь порядок заполнения значениями этого массива. Вариантов заполнения несколько (но результат всегда одинаковый), я приведу такой. Сначало заполняем левую сторону вот так (идем снизу вверх): - самая нижняя ячейка будет равна 15 (я беру данные сейчас для приведенного массива) - а в общем случае самая нижняя ячейка всегда будет равна значению левой нижней ячейки массива со входными данными. - следующая (левая вторая снизу) будет равна 18 (сумме нижней на одну ступень ячейки второго массива и соответствующей ячейки первого массива) - тут уж не поспоришь (если двигаться можно только вверх и направо, то для данной ячейки самое большое значение может быть только 18) - следующая (левая третья снизу) - по такой же аналогии (сумма нижней на одну ступень ячейки второго массива и соответствующей ячейки первого массива) - 23 - и т.д. до самого верха самого левого ряда. Добавлено через 8 минут Теперь второй слева столбец (и все остальные за ним) заполняются так (начинаем опять снизу): - самый нижний элемент всегда будет равен сумме предудущего слева элемента во втором массиве и соответствующего элемента в первом массиве (т.е. для второго столбца самый нижний элемент будет равен - 22) тут тоже не поспоришь, ведь путь в эту клетку только один. - все последующие элементы выбираются так: сравниваем во два элемента во втором массиве (слева от текущего элемента и снизу от текущего элемента), который элемент из этих больше, его значение суммируем с текущим элементом из первого массива и получаем значение текущего элемента во втором массиве. Таким образом мы определяем масимальное значение для каждой клетки которое можно набрать двигаясь только прямо или вправо с нижнего левого угла. Добавлено через 11 минут Таким образом мы заполним весь второй массив. В врехнем правом углу получится максимальное значение, которое можно набрать. Теперь о пути. Путь можно вычислить, после заполнения второго массива, двигаясь обратно. Для этого создаем массив, в котором будем хранить сам путь (хотите типа char сразу, хотите типа int - это все непринципиально). Размер массива всегда будет равен n+(n-2) - не количество пройденных клеток, а количество перемещений между ними. Итак начинаем с верхнего правого элемента второго массива - будем называть рассматриваемый элемент массива текущим. Если от значения текущего элемента второго массива отнять значение текущего элемента первого массива и получится значение левого от текущего элемента второго массива, то записываем в массив пути F и делаем текущим элемент слева от текущего. Если полученное значение равно значению нижнего от текущего элемента второго массива, то записываем в массив пути R и делаем текущим элемент снизу от текущего. И так до конца (до того момента пока текущим не станет самый ниэний левый элемент). Вывод результата производить с конца массива пути.
2
|
|
|
392 / 284 / 53
Регистрация: 26.12.2009
Сообщений: 874
|
||||||
| 25.10.2010, 21:43 [ТС] | ||||||
для таблиц до 100х100 вроде работает а где тут динамическое программирование?
0
|
||||||
|
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
|
|
| 25.10.2010, 21:55 | |
|
Mayonez, что выдает Ваша программа на приведенные Вами значения в массиве? А потом подайте на вход те же значения массива только исправьте правое нижнее значение на 100000 и напишите что получилось?
1
|
|
|
1563 / 1041 / 94
Регистрация: 17.04.2009
Сообщений: 2,995
|
|
| 25.10.2010, 22:04 | |
|
valeriikozlov, вы конечно правы. Но одно дело сделать так, чтобы работало всегда, а другое что бы работало как требуется. От него не требуют большего. Так тут в каждом втором задании на форуме можно найти недочеты.
0
|
|
|
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
|
||||
| 25.10.2010, 22:13 | ||||
я тоже бывает ошибаюсь, ведь я тоже человек. Просто я практически только вернулся с другого сайта, где даже малейшим ошибкам не было места, или все правильно или не зачет. Наверное это сказывается, Вы тоже в чем-то правы!
1
|
||||
|
392 / 284 / 53
Регистрация: 26.12.2009
Сообщений: 874
|
|
| 25.10.2010, 22:19 [ТС] | |
|
0
|
|
|
1563 / 1041 / 94
Регистрация: 17.04.2009
Сообщений: 2,995
|
|
| 25.10.2010, 22:24 | |
|
0
|
|
|
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
|
|
| 25.10.2010, 22:25 | |
|
Что же у Вас за компилятор, который запросто переваривает stl, а в переменной типа int не выносит значений более 32767? Ну тогда запишите туда значение не 100000 а 10000.
1
|
|
|
392 / 284 / 53
Регистрация: 26.12.2009
Сообщений: 874
|
|||
| 25.10.2010, 22:28 [ТС] | |||
![]() Добавлено через 1 минуту
0
|
|||
|
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
|
|
| 25.10.2010, 22:33 | |
|
это и называется динамическим програмированием.
Добавлено через 1 минуту Если хотите разобраться в нем побольше, Вам нужно что-нибудь почитать об этом.
1
|
|
| 25.10.2010, 22:33 | |
|
Помогаю со студенческими работами здесь
19
Кратчайший маршрут Оптимальный маршрут почтальона Найти кратчайший маршрут программа шахматы (маршрут коня)
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение.
И на уровне агентов добавится между грибами или бактериями взаимодействий.
До того я пробовал подход через многомерные массивы,. . .
|
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Сочетание глобально распределённой вычислительной мощности и инновационных. . .
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|