Невозможно найти ошибку в моем алгоритме ранца - PullRequest
0 голосов
/ 18 апреля 2020

Мой алгоритм выглядит точно так же при сравнении с другими онлайн-источниками, но я не могу найти ошибку.

int knapSack(int value[],int weight[],int size,int W)
{
    int knapsack[size+1][W+1];

    for(int i = 0;i<=size;i++)
    {
        for(int j = 0;j<=W;j++)
        {
            if(i==0 || j==0)
             knapsack[i][j] = 0;

                if(weight[i-1] > j)
                 knapsack[i][j] = knapsack[i-1][j];
                else
                 knapsack[i][j] = max(knapsack[i-1][j],value[i-1]+knapsack[i-1][W-weight[i-1]]);

        }
    }

    return knapsack[size][W];
}

1 Ответ

0 голосов
/ 18 апреля 2020

Когда i==0 || j==0, тогда вам не нужно ничего вычислять, его результат всегда равен 0. В настоящее время он входит в if-else и снова вычисляет его для этого случая.

if(i==0 || j==0){
   knapsack[i][j] = 0;
   continue;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...