Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.04.2013, 23:12   #1
maxim3535
Пользователь
 
Регистрация: 31.03.2013
Сообщений: 14
По умолчанию нахождение стоимости максимального пути (язык С)

в файл вводится двумерный массив
(например такой
4 5 6 8
6 4 3 1
8 9 5 3
3 5 6 3 )
и его размерность.
программа должна вычислить стоимость максимального пути при движении из верхнего левого угла в нижний правый, двигаясь только вправо и вниз, и вывести результат в файл.

делал вот так

Код:
while ((r!=m)&&(k!=n)) //цикл с предусловием, определяющим точку остановки исполнителя
	{
		if (a[r][k+1]>a[r+1][k]) //условие, определяющее шаг исполнителя вправо на 1
		{	sum+=a[r][k+1]; //сумматор стоимости пути
			k+=1; //переход исполнителя в соседнюю справа клетку
		}
		else //условие, определяющее шаг исполнителя вниз на 1
		{
			sum+=a[r+1][k]; //сумматор стоимости пути
			r+=1; //переход исполнителя в соседнюю слева клетку
		}
сказали, что это неправильно, т. к.
при матрице

5 1 2 3
3 2 1 2
1 3 4 2
100 3 2 1

выдаст неверный результат

помогите пожалуйста составить верный код!
P.S. в коде должна использоваться функция(любая)

Последний раз редактировалось maxim3535; 16.04.2013 в 23:15.
maxim3535 вне форума Ответить с цитированием
Старый 17.04.2013, 16:43   #2
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

maxSum[r][c] = a[r][c] + max(a[r - 1][c], a[r][c - 1])
Somebody вне форума Ответить с цитированием
Старый 17.04.2013, 16:57   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

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


Это типичная задача на динамическое программирование.
Воспользуйтесь поиском по форуму. Думаю, что Вы легко найдёте примеры решения и объяснение алгоритма.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нахождение максимального элемента (assembler) roxy7 Помощь студентам 0 07.12.2011 20:09
Нахождение минимального и максимального (Циклы на СИ++) DesignFootball.Ru Помощь студентам 20 23.10.2011 13:48
Нахождение максимального подмножества Lodyr Общие вопросы C/C++ 0 10.11.2010 23:09
Нахождение максимального потока в сетях Delphi ftp123 Помощь студентам 2 02.06.2010 07:26
Поиск минимального и максимального пути в графе!!!! OZZY_91 Помощь студентам 1 18.11.2009 13:20