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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.08.2014, 17:55   #1
Evil Nigga
 
Регистрация: 08.08.2014
Сообщений: 7
По умолчанию 0-1 рюкзак: наибольший вес

Видел только заполнение рюкзака чтобы была наибольшая стоимость, а как это решить не имею представления. Помогите, пожалуйста, непонятлиевому.

Дано N золотых слитков массой m1, …, mN. Ими наполняют рюкзак, который выдерживает вес не более M. Какую наибольшую массу золота можно унести в таком рюкзаке?

Входные данные
В первой строке вводится натуральное число N, не превышающее 100 и натуральное число M, не превышающее 10000.
Во второе строке вводятся N натуральных чисел mi, не превышающих 100.

Выходные данные
Выведите одно целое число - наибольшую возможную массу золота, которую можно унести в данном рюкзаке.

Входные данные
4 6
2 7 1 1

Выходные данные
4
Evil Nigga вне форума Ответить с цитированием
Старый 08.08.2014, 20:31   #2
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Код:
var
	n, m, i, j : LongInt;
	w : array [1..100] of Integer;
	a : array [0..100, 0..10000] of Integer;

begin
	ReadLn(n, m);

	for i := 1 to n do Read(w[i]);


	for i := 1 to n do 
		for j := 0 to m do begin
			a[i][j] := a[i-1][j];
			if (j >= w[i]) and (a[i-1][j-w[i]]+w[i] > a[i][j]) then a[i][j] := a[i-1][j-w[i]]+w[i]; 
		end;



	WriteLn(a[n][m]);
end.
Poma][a вне форума Ответить с цитированием
Старый 09.08.2014, 12:40   #3
Evil Nigga
 
Регистрация: 08.08.2014
Сообщений: 7
По умолчанию

Poma][a, а как изменится решение,если количество слитков каждого достоинства неограниченное количество?
Evil Nigga вне форума Ответить с цитированием
Старый 09.08.2014, 12:50   #4
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Пока вижу только такой вариант : добавляем n+1 слиток.. сначала он ставится равным 1-ому, 2-ому и т.д. Как только мы улучшили результат, мы повторяем всё сначала.. И так до тех пор, пока результат не остановится улучшаться
Poma][a вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Идеальный вес radeon123 Общие вопросы Delphi 2 11.02.2012 09:37
вес в футах ms301 Помощь студентам 2 28.12.2011 00:36
Знаменитая задача про рюкзак:\ Duragon Помощь студентам 1 20.06.2011 11:02
Вес romanzi Общие вопросы Delphi 1 21.02.2011 18:52
Рюкзак на Delphi serg268 Помощь студентам 3 23.09.2010 14:50