最优装载—dp

动态规划

一 问题描述

二 问题分析

三 代码实现

package dp_Loading;

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException; public class bin
{
public static void main(String[] args) throws IOException
{
int []w={0,20,10,40,30,50,60,70};
int c=180;
dp_Loading myDp_Loading=new dp_Loading(w, c);
}
}
class dp_Loading
{
int w[];
int c;
int cc;
int m[][];
int x[]; //迭代路线记录
public dp_Loading(int w[], int c) throws IOException
{
this.c=c;
this.cc=c;
this.w=w;
this.m=new int [w.length][c+1];
this.x=new int [w.length];
Dp_Loading();
display();
}
public void Dp_Loading()
{
for(int i=0; i<w.length; i++)
{
m[i][0]=0; //船的容量为0
}
for(int j=0; j<=c; j++)
{
m[0][j]=0; //没有集装箱可装
}
for(int i=1; i<w.length; i++)
{
for(int j=1; j<w[i]; j++)
{
m[i][j]=m[i-1][j];
}
for(int j=w[i]; j<=c;j++)
{
m[i][j]=Math.max(m[i-1][j], m[i-1][j-w[i]]+w[i]);
}
}
//恢复迭代路径
for(int i=w.length-1; i>=1; i--)
{
if(m[i][cc]==m[i-1][cc]) //这个集装箱没有装入
{
x[i]=0;
}
else
{
x[i]=1;
cc-=w[i];
}
}
}
public void display() throws IOException
{
BufferedWriter fout=new BufferedWriter(new FileWriter("out.txt"));
fout.write("c="+c);
fout.newLine();
fout.write("optw="+m[w.length-1][c]);
fout.newLine();
fout.write("m[i][j]:");
fout.newLine();
for(int i=0; i<w.length; i++)
{
for(int j=0; j<=c; j++)
{
fout.write("\t"+m[i][j]);
}
fout.newLine();
}
fout.write("x[i]:");
fout.newLine();
for(int i=1; i<w.length; i++)
{
fout.write("\t"+x[i]);
fout.newLine();
}
fout.flush();
}
}

四 运行结果

五 总结收获

  1. dp 关键在于得到递归方程
  2. 由递归方程分析迭代过程,最后给出循环

六不足

  1. dp应当多加练习

最优装载—dp的更多相关文章

  1. 使用STL处理分支限界法处理最优装载问题

    使用STL处理分支限界法处理最优装载问题 #include <iostream>#include <vector>#include <queue>#include ...

  2. 回溯法最优装载问题(java)

    1.问题描述:      有一批共有 n 个集装箱要装上两艘载重量分别为 c1 和 c2 的轮船,其中集装箱 i 的重量为 w[i], 且重量之和小于(c1 + c2).装载问题要求确定是否存在一个合 ...

  3. 矩阵最优路线DP

    母题:矩阵中每个点有权值,每经过一个点就累加权值,求从a点到b点的最优(最大)路线. 题型1: 从左上到右下,只能向下或者向右 for 行 for 列 dp=max dp左,dp上; 扫一遍就行 有时 ...

  4. 动态规划:双重DP

    之前做过的传纸条那道题就是双重动态规划的典型应用,题意就不描述了,直接贴一下以前写过的,经典代码 #include<iostream> using namespace std; ,maxm ...

  5. Dp状态设计与方程总结

    1.不完全状态记录<1>青蛙过河问题<2>利用区间dp 2.背包类问题<1> 0-1背包,经典问题<2>无限背包,经典问题<3>判定性背包问 ...

  6. hdu 3507 斜率dp

    不好理解,先多做几个再看 此题是很基础的斜率DP的入门题. 题意很清楚,就是输出序列a[n],每连续输出的费用是连续输出的数字和的平方加上常数M 让我们求这个费用的最小值. 设dp[i]表示输出前i个 ...

  7. [kuangbin带你飞]专题二十 斜率DP

            ID Origin Title   20 / 60 Problem A HDU 3507 Print Article   13 / 19 Problem B HDU 2829 Lawr ...

  8. [原]POJ1141 Brackets Sequence (dp动态规划,递归)

    本文出自:http://blog.csdn.net/svitter 原题:http://poj.org/problem?id=1141 题意:输出添加括号最少,并且使其匹配的串. 题解: dp [ i ...

  9. [HDOJ2639]Bone Collector II(第k优01背包)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2639 题意:求01背包的第k优解 dp(i, j)表示容量为j时的i优解 对于第二维的操作和01背包几 ...

随机推荐

  1. Vue的钩子函数[路由导航守卫、keep-alive、生命周期钩子]

    前言 说到Vue的钩子函数,可能很多人只停留在一些很简单常用的钩子(created,mounted),而且对于里面的区别,什么时候该用什么钩子,并没有仔细的去研究过,且Vue的生命周期在面试中也算是比 ...

  2. Vue(一)安装

    环境准备 这里我们就直接使用官方推荐的Vue CLI方式 CLI (@vue/cli) 是一个全局安装的 npm 包,提供了终端里的 vue 命令.它可以通过 vue create 快速创建一个新项目 ...

  3. 将服务器文件上传到ftp shell操作

    date cd /home/data today_now=`date +%Y%m%d` #当前日期 cur_date=${today_now::} #echo ${cur_date} #判断是否文件生 ...

  4. matplotlib绘图总结

    本文作为学习过程中对matplotlib一些常用知识点的整理,方便查找. 类MATLAB API 最简单的入门是从类 MATLAB API 开始,它被设计成兼容 MATLAB 绘图函数. from p ...

  5. 键盘快捷键大全 - Mac 技巧

    整理了一份Mac的快捷键大全,觉得有用可以转发/收藏起来. Mac 键盘快捷键 您可以按下某些组合键来实现通常需要鼠标.触控板或其他输入设备才能完成的操作. 要使用键盘快捷键,请按住一个或多个修饰键, ...

  6. C#设计模式(16)——中介者模式

    1.中介者模式介绍 中介者模式,定义了一个中介对象来封装一系列对象之间的交互关系,中介者使各个对象之间不需要显式地相互引用,从而降低耦合性.在开发中我们会遇到各个对象相互引用的情况,每个对象都可以和多 ...

  7. SpringBoot系列:Pojo validation

    JSR 303 规范了bean validation, Hibernate validator实现了JSR 303所有的规范, 同时也是最常用的validator 工具包. 使用 Hibernate ...

  8. 使用 Google

    非原版 Glgoo:http://www.glgoo.com/谷粉搜搜:http://www.gfsoso.net/谷粉搜搜:http://www.gfsswy.com/谷粉搜搜:http://guf ...

  9. UE4渲染笔记

    Lightmass 实时渲染光影效果对性能有很大影响,可利用lightmass预先生成光影贴图,然后在游戏中使用. 将场景光照结果完全烘焙到模型贴图上,从而完完全全的假冒现实光照效果. 文档上是 li ...

  10. Android Fragment 生命周期及其正确使用(建议使用自定义View替换Fragment)

    使用Fragment 官方例子中显示: 例如:一个学生Fragment,需要传入studentId,进行http请求显示,那么setArguments后防止杀掉Fragment后,参数为0,显示不了数 ...