完美世界笔试(背包问题)
Posted ncznx
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了完美世界笔试(背包问题)相关的知识,希望对你有一定的参考价值。
小艺每天都在吃和睡中浑浑噩噩的度过。
然而肚子是有容量上限V的。
假设,小艺有n种零食,每种零食的甜蜜值为b,占据小肚子空间ai.
小艺想知道在自己肚子空间上限允许范围内能获得的最大甜蜜值是多少。
输入描述:
第一行输入整数v和n,分别代表肚子容量上限,和零食种类数(1<=v,n<=1000)
以下n行每行包含两个整数,代表每种零食占据肚子空间a和甜蜜值b.(1<=a,b<=1000)
输出描述:
最大甜蜜值
例
70 3
71 100
69 1
1 2
输出:140
代码:
1 import java.util.Scanner; 2 3 public class Wanmeishijie01 { 4 5 public static void main(String[] args) { 6 // TODO Auto-generated method stub 7 // 小艺每天都在吃和睡中浑浑噩噩的度过。 8 // 9 // 然而肚子是有容量上限V的。 10 // 11 // 假设,小艺有n种零食,每种零食的甜蜜值为b,占据小肚子空间ai. 12 // 13 // 小艺想知道在自己肚子空间上限允许范围内能获得的最大甜蜜值是多少。 14 // 15 // 输入描述: 16 // 17 // 第一行输入整数v和n,分别代表肚子容量上限,和零食种类数(1<=v,n<=1000) 18 // 以下n行每行包含两个整数,代表每种零食占据肚子空间a和甜蜜值b.(1<=a,b<=1000) 19 // 20 // 输出描述: 21 // 22 // 最大甜蜜值 23 // 70 3 24 // 71 100 25 // 69 1 26 // 1 2 27 28 Scanner sc = new Scanner(System.in); 29 String line0 = sc.nextLine(); 30 String[] sline = line0.split(" "); 31 // for(String k:sline) 32 int v = Integer.parseInt(sline[0]); 33 int n = Integer.parseInt(sline[1]); 34 int[] varr = new int[n]; 35 int[] tarr = new int[n]; 36 for (int i = 0; i < n; i++) { 37 String line1 = sc.nextLine(); 38 String[] sl = line1.split(" "); 39 varr[i] = Integer.parseInt(sl[0]); 40 tarr[i] = Integer.parseInt(sl[1]); 41 } 42 // for(int k:varr) 43 // System.out.println(k); 44 System.out.println(tianMi(varr,tarr,v,n)); 45 } 46 public static int tianMi(int[] varr,int[] tarr,int v,int n) { 47 int maxm=1000; 48 int k=0; 49 int tianmi=0; 50 int[] f=new int[maxm]; 51 // int[] c=new int[maxm]; 52 // int[] w=new int[maxm]; 53 for(int i=0;i<n;i++) { 54 for(k=varr[i];k<=v;k++) 55 f[k]=Math.max(f[k-varr[i]]+tarr[i],f[k]); 56 } 57 tianmi=f[v]; 58 return tianmi; 59 } 60 61 }
以上是关于完美世界笔试(背包问题)的主要内容,如果未能解决你的问题,请参考以下文章