01 背包基础题目
来源:互联网 发布:尔雅公选课软件 编辑:程序博客网 时间:2024/05/21 12:48
这道题目很简单,但是数据有一个很坑人之处,就是,有的骨头有价值,但是他所占的空间为0,如果你不知道你的代码为什么总是WA的话,可以试试下面这组数据
1
2 0
20 1
0 1
答案应该是20.当然,这是按照普通的二维DP来做的,没有进行优化,其实感觉DP就是背包啊
用了两种方法,优化的和没优化的,就是想多练练
//Bone Collector////题目链接:http://acm.hdu.edu.cn/webcontest/contest_showproblem.php?pid=1001&ojid=0&cid=2521&hide=0//一维数组//#include<stdio.h>#include<string.h>#define max(x,y) (x)>(y)?(x):(y)int f[2000],c[2000],w[2000];int main(){int i,j,k;int t;int n,v;scanf("%d",&t);while(t--){memset(f,0,sizeof(f));scanf("%d%d",&n,&v);for(i=1;i<=n;i++)scanf("%d",&w[i]); for(i=1;i<=n;i++)scanf("%d",&c[i]);for(j=1;j<=n;j++){for(k=v;k>=c[j];k--)f[k]=max(f[k],f[k-c[j]]+w[j]);}printf("%d\n",f[v]);}return 0;}//二位普通DP思想//#include<stdio.h>#include<string.h>#define max(x,y) (x)>(y)?(x):(y)int w[2000],c[2000];int dp[2000][2000];int main(){int t;int n, v;int i, j, k;scanf("%d", &t);while(t--){scanf("%d%d", &n, &v);memset(dp,0,sizeof(dp));for(i = 1; i <= n; i++)scanf("%d", &w[i]);for(i = 1; i <= n; i++)scanf("%d", &c[i]);for(i = 1; i <= n; i++){for(j = 0; j <= v; j++)if(j>=c[i])dp[i][j]=max(dp[i-1][j],dp[i-1][j-c[i]]+w[i]);elsedp[i][j]=dp[i-1][j];}printf("%d\n", dp[n][v]);}return 0;}
- 01 背包基础题目
- 题目1 : 01背包
- 基础背包问题的一些题目!!
- 背包题目
- 01背包基础
- 基础01背包
- HDU2602-01背包基础
- 又见01背包(01背包题目3)
- 01背包基础-1085 背包问题
- poj3624及01背包入门题目
- POJ 3624 01背包入门题目
- HDOJ 题目2546饭卡(01背包)
- 01背包 -- 动态规划的入门题目
- Bookshelf 2(01背包题目4)
- 苹果(01背包题目5)
- NYOJ 题目860 又见01背包
- hdu2546饭卡(经典01背包题目)
- hdu2602(01背包基础)
- poj2075Tangled in Cables (最小生成树之prim)
- POJ 3259 最短路 判负环
- 小学期练习一(高级班) C - Holiday's Accommodation
- 几种典型的 iOS 应用界面的交互框架各自的优缺点
- 将一个NSImage实例保存成图片文件
- 01 背包基础题目
- 用Zebra做简单的RIP实验
- 树状数组
- Using DBI to connect to a Microsoft SQL server
- POJ1258Agri-Net (最小生成树之prim)
- 易语言模板1 ,易语言编辑器代码样式
- Android使用WebView打开网页的实例
- hdu 3507 斜率优化dp
- 真実はいつもひとつ