NYOJ 题目289 苹果
2016-05-27 21:50
232 查看
ctest有n个苹果,要将它放入容量为v的背包。给出第i个苹果的大小和价钱,求出能放入背包的苹果的总价钱最大值。
输入
有多组测试数据,每组测试数据第一行为2个正整数,分别代表苹果的个数n和背包的容量v,n、v同时为0时结束测试,此时不输出。接下来的n行,每行2个正整数,用空格隔开,分别代表苹果的大小c和价钱w。所有输入数字的范围大于等于0,小于等于1000。
输出对每组测试数据输出一个整数,代表能放入背包的苹果的总价值。
样例输入
样例输出
01背包经典问题。
AC代码:
输入
有多组测试数据,每组测试数据第一行为2个正整数,分别代表苹果的个数n和背包的容量v,n、v同时为0时结束测试,此时不输出。接下来的n行,每行2个正整数,用空格隔开,分别代表苹果的大小c和价钱w。所有输入数字的范围大于等于0,小于等于1000。
输出对每组测试数据输出一个整数,代表能放入背包的苹果的总价值。
样例输入
3 3 1 1 2 1 3 1 0 0
样例输出
2
01背包经典问题。
AC代码:
#include<stdio.h> #include<iostream> using namespace std; int dp[1010][1010]; int c[1010],w[1010]; int main() { int n,v,i,j; while(~scanf("%d%d",&n,&v)&&n+v) { for(i=1;i<=n;i++) scanf("%d %d",&c[i],&w[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]); else dp[i][j]=dp[i-1][j]; } printf("%d\n",dp [v]); } return 0; }
相关文章推荐
- 二维数组的遍历练习
- Android-SlidingMenu
- 简单的MYSQLI事务处理
- 初始android studio 的 Gradle Plugin
- linux下报错bash: service: command not found
- 使用Picasso加载网页图片到RecyclerView
- 拖动 tableView 来缩放顶部图片
- poj 2245 Lotto
- 改进的KMP算法
- Java设计模式之原型模式
- 《OpenCV图像处理编程实例》-正式上架
- 机器学习中使用的神经网络第十讲笔记
- 前端学习总结(十七)React Native——移动开发的未来趋势
- nyoj1255 Rectangles(第七届河南省程序设计大赛)
- 使用adb shell 进入手机修改文件的权限
- 第二阶段冲刺第三天
- SQL 查询45题
- MFC编程 char*和CString两种类型的互相转换
- winform写的搜索文件目录小程序
- Java并发线程--多线程的创建