Menu
CoddyTech

背包问题

Coddy 递归挑战:掌握递归思维 课程的第 7 课,共 15 课。

challenge icon

挑战

中等

背包问题是一个著名的问题。

在这个问题中,你有一个背包,它能装的重量有一个预设上限,还有一些物品,每件物品都有重量和值。

你的任务是在背包重量限制内,装入尽可能多的价值。 


例如,

values - [20, 5, 40, 10, 15]

weights - [1, 2, 8, 3, 7]

背包的重量上限 - 10

 

答案是选择重量为 1 和 8、值为 20 和 40 的物品。

最大值为 60,总重量为 9(小于或等于 10,说明重量符合要求)。


编写一个名为 knapsack 的函数,它接收一个整数 W 和两个整数数组 values 与 weights,并使用输入的值返回背包问题的答案(背包能装入的最大值)。

亲手试试

#include <stdio.h>
#include <stdlib.h>

int knapsack(int W, int* values, int values_size, int* weights, int weights_size) {
    // 在这里编写代码
    return 0;
}

递归挑战:掌握递归思维中的所有课

自己练习: C 在线编译器