首页 > 代码库 > 0-1背包
0-1背包
#include <stdio.h>#include <string.h>int f[1001][1001];int c[1001];int w[1001];int N,V;int main(){ int t; int i,j; scanf("%d",&t); while(t--) { memset(f,0,sizeof(f)); scanf("%d%d",&N,&V); for(i = 1;i<=N;i++) { scanf("%d",&w[i]); } for(i = 1;i<=N;i++) { scanf("%d",&c[i]); } for(i = 1;i<=N;i++) { for(j = 0;j<=V;j++) { if(j>=c[i]) { if(f[i-1][j]<f[i-1][j-c[i]] + w[i]) { f[i][j] = f[i-1][j-c[i]] + w[i]; } else { f[i][j] = f[i-1][j]; } } else f[i][j] = f[i-1][j]; } } printf("%d\n",f[N][V]); }}
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。