Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
2 / 2 / 1
Регистрация: 03.11.2014
Сообщений: 129
1

Как работает алгоритм ПП рюкзака?

09.05.2016, 18:18. Показов 865. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, вот код полного перебора рюкзака. Все понимаю, кроме главного цикла, где всё высчитывается. v - объем рюкзака, n -кол- во предметов weight [i] - вес предмета, cost [i] - цена предмета. Можете пожалуйста подсказать? Заранее благодарен.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <iostream>
#include <windows.h>
using namespace std;
int backpack(const int* weight, const int* cost, int V, int N)
{
    int* array = new int[V + 1];      
    array[0] = 0;
    for (int i = 1; i <= V; ++i) {      //вот этот цикл.
        array[i] = array[i - 1];
        for (int j = 0; j<N; ++j)
            if (weight[j] <= i)
                array[i] = max(array[i], array[i - weight[j]] + cost[j]);
    }
    int maxCost = array[V];
    delete[] array;
    return maxCost;
}
int main()
{
    int N, V;
    cout << "Vvedite ob'em rukzaka: "; cin >> V;
    cout << "Vvedite kolichestvo predmetov: "; cin >> N;
    int* weight = new int[N];
    int* cost = new int[N];
    for (int i = 0; i<N; ++i) {
        system("cls");
        cout << "Ostalos' predmetov: " << N - i;
        cout << "\n\nVvedite ves predmeta: "; cin >> weight[i];
        cout << "Vvedite stoimost: "; cin >> cost[i];
    }
    system("cls");
    std::cout << "Naibol'shaya stoimost' = " << backpack(weight, cost, V, N);
    delete[] weight;
    delete[] cost;
    return 0;
}
Добавлено через 23 часа 2 минуты
Очень нуждаюсь в ответе.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.05.2016, 18:18
Ответы с готовыми решениями:

Определите вес рюкзака и чемодана после того, как Степан составит все вещи
Степан собирает вещи в отпуск. С собой в самолет он может взять ручную кладь и багаж. Для ручной...

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

Объясните как работает алгоритм
Этот алгоритм парсит числа из строки и сортирует их по возрастанию. Я понял только накапливание...

как работает алгоритм sha-1
как работает алгоритм sha-1 можно ли объяснять код #include &quot;stdio.h&quot; #include &quot;stdlib.h&quot;...

1
193 / 100 / 131
Регистрация: 23.06.2015
Сообщений: 249
09.05.2016, 18:31 2
Это типичная дпшка:
dp[i][j] - максимальная цена, используя выборку из i первых предметов и общим весом j

База: dp[i][0] = dp[0][j] = 0

Пересчет:
dp[i][j] = max(max(dp[i - 1][j], dp[i][j - 1]), weight[i] >= j ? dp[i - 1][j - weight[i]] + cost[i] : 0); - предметы уникальные
dp[i][j] = max(max(dp[i - 1][j], dp[i][j - 1]), weight[i] >= j ? dp[i][j - weight[i]] + cost[i] : 0); - предметы не уникальные

Ответ:
dp[n][v]

Если память жмет, то можно считать динамику по-слоям(вы это и пытаетесь сделать)
0
09.05.2016, 18:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.05.2016, 18:31
Помогаю со студенческими работами здесь

Как работает этот алгоритм?
Объясните как работает этот алгоритм по вычислению дня недели по дате. Зачем здесь столько...

Как работает генетический алгоритм
Здравствуйте, интересуют следующие вопросы: Как работает генетический алгоритм в Matlab? Как он...

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

Как работает алгоритм Khazad
очень нужно обясните


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru