zoukankan      html  css  js  c++  java
  • 动态规划常见问题

    1 0-1背包

     

     java代码:

     1 //import java.util.ArrayList;
     2 import java.util.Arrays;
     3 
     4 public class Solution {
     5     public static int[][] Bag(int W,int N, int wt[],int val[]){
     6         //初始化dp数组-定义状态
     7         /*dp[i][w] 表⽰:对于前 i 个物品,当前背包的容量为 w 时,这种情况下可以装下的最⼤价值是 dp[i][w]*/
     8         int dp[][] = new int[N+1][W+1];
     9         for (int i = 0; i < dp.length; i++) {
    10             Arrays.fill(dp[i],0);
    11         }
    12         //编写状态转移代码
    13         for (int i = 1; i <= N; i++) {
    14             for (int w = 1; w <= W; w++) {
    15                 if(w - wt[i-1] < 0){//容量不够,此时不装
    16                     dp[i][w] = dp[i-1][w];
    17                 }else{//容量够,装入背包
    18                     dp[i][w]=Math.max(dp[i-1][w],//如果你没有把这第 i 个物品装⼊背包
    19                                       dp[i-1][w-wt[i-1]] + val[i-1]);//如果你把这第 i 个物品装⼊了背包
    20                 }
    21             }
    22         }
    23         //返回dp表
    24         return dp;
    25     }
    26 
    27     public static void main(String[] args) {
    28         int wt[] = new int[]{2,1,3};
    29         int val[] = new int[]{4,2,3};
    30         int W = 4,N = 3;
    31 
    32         int res[][] = Bag(W,N,wt,val);
    33         for (int i = 0; i < res.length; i++) {
    34             System.out.println(Arrays.toString(res[i]));
    35         }
    36     }
    37 }
    View Code

    结果:

  • 相关阅读:
    Python之路系列:面向对象初级:静态属性、静态方法、类方法
    对象和类
    Python的函数参数传递
    python参数传递:对象的引用
    Python的locals()函数
    Python 异常处理
    Python变量类型的强制转换
    日常问题总结
    高效能人士的七个习惯
    Dojo入门:DOM操作
  • 原文地址:https://www.cnblogs.com/xuechengmeigui/p/14719672.html
Copyright © 2011-2022 走看看