首页 > 代码库 > #1043 : 完全背包
#1043 : 完全背包
与01背包区别是:need[i]可以重复
import java.util.*;
public class Main {
public static void main(String[] args)
{
//用一维数组实现
Scanner sc=new Scanner(System.in);
int n,m;
n=sc.nextInt();
m=sc.nextInt();
int need[] =new int[n];
int val[]=new int[n];
int f[]=new int[m+1];
for(int i=0;i<n;i++)
{
need[i]=sc.nextInt();
val[i]=sc.nextInt();
}
for(int i=0;i<n;i++)
{
// for(int j=m;j>=need[i];j--) 01背包解法
for(int j=need[i];j<=m;j++)
{
f[j]=Math.max(f[j],f[j-need[i]]+val[i]);
}
}
System.out.println(f[m]);
}
}
举这个例子好理解
3 8
4 8
2 5
3 10
#1043 : 完全背包
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。