蛮力法之01背包

来源:互联网 发布:linux 用户切换 编辑:程序博客网 时间:2024/05/19 17:51

背包问题,毫无疑问是动态规划的东西,但是作为菜鸟,写一下菜鸟的东西也有点用处滴...

#include <iostream>#include <vector>using namespace std;void MFKnapsack(int capacity, int *values, int *weights, vector<int> &c, int d, int &max_value){if (d== 0) {int cur_weight = 0, cur_value = 0;for (int i = 0; i != d; ++i) {if (c[i] == 0) {cur_weight += weights[i];cur_value += values[i];}}if (cur_weight <= capacity && cur_value > max_value) {max_value = cur_value;}return;}c[d] = 0;MFKnapsack(capacity, values, weights, c, c.size()-2, max_value);c[d] = 1;MFKnapsack(capacity, values, weights, c, c.size()-2, max_value);}int MFKnapsack(int capacity, int *values, int *weights, int n) {int max_value=0;vector<int> c(n,0);cout<<c.size()<<endl;MFKnapsack(capacity,values,weights,c,1,max_value);return max_value;}int main() {int capacity=10,n=7;int values[]={6,3,5,4,6,3,10};int weights[]={1,2,5,5,4,4,6};cout << MFKnapsack(capacity, values, weights, n) << endl;system("pause");}


原创粉丝点击