1. 程式人生 > >完美世界筆試(背包問題)

完美世界筆試(背包問題)

整數 col urn main generated tar args ++ 都在

小藝每天都在吃和睡中渾渾噩噩的度過。
然而肚子是有容量上限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 }

完美世界筆試(背包問題)