当前位置: 首页 > wzjs >正文

土特产网站的制作做外贸网站的公司

土特产网站的制作,做外贸网站的公司,温州网站制作多少钱,一站式网站建设报价动态规划:01 背包(闫氏DP分析法) 01 背包 www.acwing.com/problem/content/2/ DP: 状态表示 f(i, j)​ 集合:所有只考虑前 i i i 个物品,且总体积不超过 j j j 的选项的集合 属性:max 最终答案&#x…

动态规划:01 背包(闫氏DP分析法)

01 背包

www.acwing.com/problem/content/2/

在这里插入图片描述

DP:

  • 状态表示 f(i, j)

    • 集合:所有只考虑前 i i i 个物品,且总体积不超过 j j j 的选项的集合

    • 属性:max

      • 最终答案:f(N, V)
  • 状态计算:f(i, j) = max(f(i - 1, j), f(i - 1, j - v[i]) + w[i])

    • 选第 i i i 个物品:所有包含第 i i i 个物品的选项集合,其实需要找的就是变化的部分的最大值,即:从 1 1 1~ i − 1 i-1 i1 中选择,且总体积小于等于 j − v [ i ] j-v[i] jv[i] 的选项集合

      j < v [ i ] j < v[i] j<v[i] 时,该分支不存在

      • 变化的部分:包含前 i − 1 i-1 i1 个物品的不同选项
      • 不变的部分:都需要包含第 i i i 个物品
    • 不选第 i i i 个物品:需要满足从 1 1 1~ i − 1 i-1 i1 中选择,且总体积小于等于 j j j 的所有选项集合

二维朴素写法

import java.util.*;public class Main {static final int N = 1010;// f[i][j] 表示只对于前i个物品且使用j的背包空间,选取的所有方案中的最大值static int[][] f = new int[N][N];static int[] w = new int[N];static int[] v = new int[N];public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();int V = sc.nextInt();for (int i = 1; i <= n; i++) {v[i] = sc.nextInt();w[i] = sc.nextInt();}// dpfor (int i = 1; i <= n; i++) {for (int j = 0; j <= V; j++) {if (j >= v[i]) {// j >= v[i] 能够将第i个物品放入// 放入第i个物品f[i][j] = f[i - 1][j - v[i]] + w[i];}// 不放入第i个物品f[i][j] = Math.max(f[i][j], f[i - 1][j]);}}System.out.println(f[n][V]);}
}

一维优化写法

import java.util.*;public class Main {static final int N = 1010;// 一维优化,相当于每次的i直接覆盖在上一次的i-1数组上// 因为每一次只会用到上一层的,不会用到更上面的数据// 且每次j-v[i]只会用在j之前的,当使用从大到小遍历时,当前修改不会影响到后面的答案// 所以可以使用滚动数组优化static int[] f = new int[N];static int[] w = new int[N];static int[] v = new int[N];public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();int V = sc.nextInt();for (int i = 1; i <= n; i++) {v[i] = sc.nextInt();w[i] = sc.nextInt();}// dpfor (int i = 1; i <= n; i++) {// 想清楚为什么要从大到小// 因为遍历到j时要使用上一层的j-v[i],所以应当先遍历大的才能避免影响for (int j = V; j >= 0; j--) {if (j >= v[i]) {// j >= v[i] 能够将第i个物品放入// 不放入第i个物品, 放入第i个物品f[j] = Math.max(f[j], f[j - v[i]] + w[i]);    }}}System.out.println(f[V]);}
}
http://www.dtcms.com/wzjs/508125.html

相关文章:

  • php做网站真的有前途吗怎么简单制作一个网页
  • 做微整的网站百度网络营销推广
  • asp网站和php网站的区别宜兴网站建设
  • 厦门建网站公司武汉seo论坛
  • 做商城的网站程序济宁seo推广
  • 个人网站可以做商业用途吗商旅100网页版
  • 学java做网站需要学什么中国万网登录入口
  • 做名片用什么网站鸿科经纬教网店运营推广
  • 怎么自己学着做网站百度问答兼职怎么做
  • 做网站运营需要学什么软件长春网站推广排名
  • 星河网站建设谷歌关键词分析工具
  • 做赛事下注网站违法吗什么是seo标题优化
  • 网站开发怎么谈查排名的软件有哪些
  • gdrp wordpress插件网站建设推广优化
  • 做网站过程中的自身不足人力资源培训机构
  • 深圳网站建设公司联系方式优化网站找哪家
  • 深圳商城网站设计制作企业网站建设方案范文
  • b2c网站的功能有哪些安徽搜索引擎优化seo
  • 重庆网上制作网站色目人
  • 哪里医院做无痛人流便宜 咨询网站在线代写文章价格表
  • 石家庄网站设计外贸网络推广怎么做
  • 网站模板及素材天津seo培训机构
  • wordpress网站如何引流seo专业优化公司
  • 广州网站设计成功柚米科技google网站登录入口
  • 怎么做网站流量附近的教育培训机构有哪些
  • 黄山网站开发抖音营销软件
  • 网站建设售后协议小网站广告投放
  • 网站几种颜色新品推广策划方案
  • 龙华做网站哪家便宜上海网络营销
  • 美国网站加速器wordpress