终于入手了01背包问题!!
2016-03-09 17:53
274 查看
对一个二维数组c[i][j] i表示放入背包中物体的个数 j表示目前剩余空间量 c表示目前的最大价值 (w[],v[]分别表示每个物品的重量 价值)
基本的动态规划问题 用一个二维数组进行动态填表
动态规划的核心是将一个问题分解成若干个子问题 并对子问题进行当前状态的最优解的问题
对01背包问题每个子问题就是在已经满足此时价值最大的情况下 对是否加入下一个物品进行取决
c[i][j]=max(c[i-1][j],c[i-1][j-w[i]+v[i]);
01背包的二维填表问题实际就是一个递推问题 首先将第一行的(即c[0])初始化 然后对j++ i++逐一的填表 得出结果
附上ac代码!!
#include<stdio.h>
int max(int x,int y)
{
if(x>y)
return x;
else
return y;
}
int main()
{
int n,i,j,sum[1010][1010],t,c,v[1020],x[1020];
scanf("%d",&t);
while(t--)
{
for(i=0;i<=1001;i++)
sum[0][i]=0;
scanf("%d %d",&n,&c);
for(i=1;i<=n;i++)
{
scanf("%d",&v[i]);
}
for(i=1;i<=n;i++)
{
scanf("%d",&x[i]);
}
for(i=1;i<=n;i++)
{
for(j=1;j<=c;j++)
{
if(j<x[i])
sum[i][j]=sum[i-1][j];
else
sum[i][j]=max(sum[i-1][j],sum[i-1][j-x[i]]+v[i]);
}
}
printf("%d\n",sum
[c]);
}
return 0;
}
杭电oj 2602题
对于一维的还在理解当中。。。 吃饭吃饭!!
基本的动态规划问题 用一个二维数组进行动态填表
动态规划的核心是将一个问题分解成若干个子问题 并对子问题进行当前状态的最优解的问题
对01背包问题每个子问题就是在已经满足此时价值最大的情况下 对是否加入下一个物品进行取决
c[i][j]=max(c[i-1][j],c[i-1][j-w[i]+v[i]);
01背包的二维填表问题实际就是一个递推问题 首先将第一行的(即c[0])初始化 然后对j++ i++逐一的填表 得出结果
附上ac代码!!
#include<stdio.h>
int max(int x,int y)
{
if(x>y)
return x;
else
return y;
}
int main()
{
int n,i,j,sum[1010][1010],t,c,v[1020],x[1020];
scanf("%d",&t);
while(t--)
{
for(i=0;i<=1001;i++)
sum[0][i]=0;
scanf("%d %d",&n,&c);
for(i=1;i<=n;i++)
{
scanf("%d",&v[i]);
}
for(i=1;i<=n;i++)
{
scanf("%d",&x[i]);
}
for(i=1;i<=n;i++)
{
for(j=1;j<=c;j++)
{
if(j<x[i])
sum[i][j]=sum[i-1][j];
else
sum[i][j]=max(sum[i-1][j],sum[i-1][j-x[i]]+v[i]);
}
}
printf("%d\n",sum
[c]);
}
return 0;
}
杭电oj 2602题
对于一维的还在理解当中。。。 吃饭吃饭!!
相关文章推荐
- Linux时间戳和标准时间的互转
- MVP“美”图+新闻+天气预报+Material+Rx+Retrofit+Glide+leakcanary+butterknife
- ubuntu如何使用gnome extensions 例如 window list 和 applications menu
- Ubuntu.Components 1.3上的PageHeader教程
- 资源奉献
- Helloworld -SilverN
- PHP获取微信openid 简单教程
- Android Retrofit2.0 学习笔记
- string类的实现终极版
- Java 变量初始化
- 好玩的Drone2Map
- Tessract 训练流程
- 微信开发
- Unity 依赖注入知识点
- jar 打包class文件
- BZOJ1143祭祀river
- 设计模式学习笔记-单例模式
- mfc list control添加点击事件
- Struts2配置--Action配置
- 获取apk的包名然后重命名apk 需要appt.exe