背包问题
Coddy 递归挑战:掌握递归思维 课程的第 7 课,共 15 课。
挑战
中等背包问题是一个著名的问题。
在这个问题中,你有一个背包,它能装的重量有一个预设上限,还有一些物品,每件物品都有重量和值。
你的任务是在背包重量限制内,装入尽可能多的价值。
例如,
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 在线编译器