您好,欢迎来到爱go旅游网。
搜索
您的当前位置:首页C++ 01背包和完全背包

C++ 01背包和完全背包

来源:爱go旅游网

用C++ 代码,实现01背包和完全背包

#include <iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<climits>
using namespace std;
int N, V;
int W[20];
int Value[20];
int f[20];

int main()
{
	scanf("%d%d", &N, &V);   //必须要选择最大的
	int ans = -1;
	cout << u << endl;
	for (int i = 1; i <= N; i++) {
		cin >>W[i]>>Value[i];
	}

	//f初始赋值为0  
	for (int i = 0; i <= V; i++) {
		f[i] =0;
	}
    
	// 01背包,逆推
	for (int i = 1; i <= N; i++) {
		for (int j = V; j >=W[i]; j--) {
			f[j] = max(f[j], f[j - W[i]] + Value[i]);
		}
	
	}
	/*
	完全背包,顺推
	for (int i = 1; i <= N; i++) {
		for (int j =W[i]; j <= V; j++) {
			  f[j] = max(f[j], f[j - W[i]] + Value[i]);
		}

	}*/

	cout<<f[V]<<endl;  //最大的为f[v]
	return 0;
}

 

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- igat.cn 版权所有 赣ICP备2024042791号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务