o-1背包问题
来源:互联网 发布:软件开发面试职业规划 编辑:程序博客网 时间:2024/06/04 20:57
给定n种物品和一背包。物品i的重量是wi,其价值为vi,背包的容量为C。问应如何选择装入背包的物品,使得装
入背包中物品的总价值最大?
入背包中物品的总价值最大?
物品个数n=5,物品重量w[n]={0,2,2,6,5,4},物品价值V[n]={0,6,3,5,4,6}, 包的体积是10
输入5 102 62 36 55 44 6输出15
#include<stdio.h>#include<string.h>#define MAXN 100#define MAXV 1000int max(int a,int b){ return a>b?a:b;}//n件物品和一个容量为v的背包。第i件物品的费用是c[i],价值是w[i]//算法1:经典DP二维数组解法,时间复杂度及空间复杂度均为O(nv)int ZeroOnePack1(int n,int v,int c[],int w[]){ int i,j; int f[MAXN][MAXV]; memset(f,0,sizeof(f)); for(i=1;i<=n;i++){ for(j=0;j<=v;j++){ if(j>=c[i]) f[i][j]=max(f[i-1][j],f[i-1][j-c[i]]+w[i]); else f[i][j]=f[i-1][j]; } } return f[n][v];}int main(){ int i; int n,v,c[MAXN],w[MAXN]; freopen("1.txt","r",stdin); while(scanf("%d %d",&n,&v)!=EOF){ for(i=1;i<=n;i++) { scanf("%d %d",&c[i],&w[i]); } printf("%d\n",ZeroOnePack1(n,v,c,w)); } return 0;}
此算法精炼可靠
通俗易懂不错
- o-1背包问题
- o-1背包问题
- o-1背包
- 背包可行性问题O(n*V)
- 01背包问题-空间复杂度o(V)
- 0/1背包问题动态规划 空间复杂度是o(C)
- 多重背包问题 可行性问题O(V N) 算法
- 背包问题1:01背包
- 背包问题《1》01背包
- 背包问题(0-1背包、完全背包、多重背包)详解
- 贪心算法解决部分背包问题 在O(lgn)时间内
- 完全背包问题(基本思路优化) O(n^2)
- 设计算法,在O(n)时间内求解分数背包问题
- 动态规划☞背包问题(⊙o⊙)…
- 背包问题和0-1背包问题
- 背包问题和0-1背包问题
- 背包问题系列--"0-1背包问题"
- 背包笔记-含0/1背包问题、完全背包问题、多重背包问题、二维背包问题、分组背包问题
- mysql中的Load data用法
- C语言 内存对齐的理解
- git参考手册与常用指令说明
- malloc/free与new/delete的相同点和不同点
- Ftp命令格式(rfc 959)
- o-1背包问题
- POJ 2195 Going Home
- Linux环境下的Socket编程
- hdu 2510 符号三角形 很好的搜索题 要经常看
- linux下c语言select函数用法
- http://www.cnblogs.com/bluestorm/archive/2011/11/05/2298125.html
- ora-03113
- 为什么现在要谈大数据?
- 单链表逆置