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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.04.2014, 20:56   #1
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,679
Вопрос Задача о рюкзаке

Добрый день!
Просьба взглянуть на код свежим взглядом.
Уже сижу несколько часов не могу сообразить. Это одна из модификаций задачи о рюкзаке. Знающие люди помнят. Задача: заполнить рюкзак с учетом того, что количество товаров ограничено. Код функционирует, но пока не выставляю одно из значений количества на 0... Вот тогда и понеслась.
Код:

	
	int Taked[GOODS] = {0};
	
	/* Заполнение рюкзака */
	int V = VOL;	// Размер рюкзака
	while(V > 0) {
		for(int i = 0; i < GOODS; i++) {
			if(W[I[V][i]] <= V) {
				if(B[I[V][i]] > 0) {
					Taked[I[V][i]]++;
					B[I[V][i]]--;
					V -= W[I[V][i]];
					break;
				}
			} 
			else {
				V -= W[I[V][i]];
				break;
			}
		}
	}
Я так полагаю что проблема именно с заполнением рюкзака, возможно я ошибаюсь...
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!

Последний раз редактировалось Bugrimov; 18.04.2014 в 22:39.
Bugrimov вне форума Ответить с цитированием
Старый 18.04.2014, 21:44   #2
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Код сам писал?
В чем именно модификация? (ты как бы намекаешь что это модификация задачи, значит это чуть чуть другая задача. Чем она другая?)
rrrFer вне форума Ответить с цитированием
Старый 18.04.2014, 21:54   #3
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,679
По умолчанию

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

Да кстати... Похоже если я устанавливаю количество 0, то цикл становится бесконечным...

Код:
while(V > 0) {
		for(int i = 0; i < GOODS; i++) {
			if(W[I[V][i]] <= V) {
				if(B[I[V][i]] > 0) {
					Taked[I[V][i]]++;
					B[I[V][i]]--;
					V -= W[I[V][i]];
					break;
				}
			} 
			else {
				V -= W[I[V][i]];
				break;
			}
		}
	}
Где же я проглядел?

Все разобрался!!!!!!!! Задача решена.
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!

Последний раз редактировалось Bugrimov; 18.04.2014 в 22:21.
Bugrimov вне форума Ответить с цитированием
Старый 18.04.2014, 23:22   #4
NomenEstOmen
Пользователь
 
Регистрация: 11.04.2014
Сообщений: 21
По умолчанию

О! Я таки целый трактат в свое время накатал по этому поводу
Вот тута
NomenEstOmen вне форума Ответить с цитированием
Старый 19.04.2014, 05:10   #5
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,679
По умолчанию

NomenEstOmen как основательно все расписано....
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача о рюкзаке. Lucid Visual C++ 2 08.11.2011 20:04
Задача о Рюкзаке. Lucid Visual C++ 3 07.11.2011 11:40
Задача о Рюкзаке. Lucid Помощь студентам 0 07.11.2011 09:34
Задача о рюкзаке VadEr Помощь студентам 6 16.09.2011 20:44