SHAOXIAOJ正在加载中...

2696: 动态规划-01背包问题

金币值:3 定数:7 时间限制:1.000 s 内存限制:128 M
正确:3 提交:6 正确率:50.00% 命题人:
点赞量:0 收藏量:0 题目类型:程序 知识点: 算法设计

题目描述

给定n(1<=n<=10)种物品和一背包,物品i (1≤i≤n) 的重量是wi (wi > 0),其价值为vi (vi > 0),背包的容量为c (0<c<=20),问应如何选择装入背包的物品,使得装入背包中物品的总价值最大?

测试代码   复制

#include "stdio.h"

int m[11][21],w[11],v[11]; //第0行不存放有效数据
int knapbag(int n, int c) {
	for(int j=0; j<=c; j++){//填写第n行数据
		
	}
	for(int i=n-1; i>=1; i--) { //分别填写第n-1,n-2,...1行数据

	}
	return m[1][c];//返回最大值
}

int main(void) {
	int n,c,result; //1<=n<=10; 0 < c <= 20
	scanf("%d %d",&n,&c);
	for (int i=1; i<=n; i++) scanf("%d",&w[i]);
	for (int j=1; j<=n; j++) scanf("%d",&v[j]);
	result=knapbag(n,c);
	printf("%d\n",result);
	return 0;
}

输入格式

第一行输入两个整数,分别表示n个物品和背包容量c
第二行输入n个整数,分别表示每个物品的重量
第三输入n个整数,分别表示每个物品的价值

输出格式

第一行输出最大价值

输入样例    复制

3 10
4 3 5
50 40 60

输出样例    复制

110

提示

给定3种物品和一背包。物品的重量分别是{3,4,5},价值分别为{4,5,6},背包的容量为c (c = 10)。问应如何选择装入背包的物品,使得装入背包中物品的总价值最大? 要求手工填写表格。