Voltar

Problema da mochila 0-1 com array 2D - Paradigmas

0 Curtidas
#include 
#define MAXN 2000
#define MAXK 1000
using namespace std;
int matrix[MAXN][MAXK + 1];
//int cost[MAXN], profit[MAXN];
int cost[3] = { 8, 6, 4 };
int profit[3] = { 16, 10, 7 };
int knapsack(int n, int k)
{
    int c;

    for(int i = 0; i < n; i++)
        for(int j = 0; j <= k; j++)
            matrix[i][j] = 0;

    for(int i = cost[0]; i <= k; i++)
        matrix[0][i] = profit[0];

    for(int i = 1; i < n; i++)
        for(int j = 0; j <= k; j++) {
            if(j - cost[i] >= 0)
                c = matrix[i - 1][j - cost[i]] + profit[i];
            else
                c = 0;

            if(c < matrix[i - 1][j])
                c = matrix[i - 1][j];

            matrix[i][j] = c;
        }

    return matrix[n - 1][k];
}
int main()
{
    printf("max value = %d\n", knapsack(3, 10));
    return 0;
}
Problemas relacionados
  Nome Comentário
Ainda não há nenhum problema relacionado a esse conteúdo
Sugestão de livro

Comentários


Postagens neste fórum só são permitidas para membros com conta ativa. Por favor, efetue login or cadastro para postar.