nyoj 289 苹果 动态规划 (java)
分析:0-1背包问题
第一次写了一大串,
时间:576 内存:4152
看了牛的代码后,恍然大悟;看来我现在还正处于鸟的阶段!
第一次代码:
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
typedef struct
{
int x;
int y;
}p;
p a[];
int b[][];
int cmp(p a,p b)
{
if(a.x==b.x)
return a.y<b.y;
else
return a.x<b.x;
}
int max(int a,int b)
{
if(a>b)
return a;
return b;
}
int main()
{
int n,v,i,j;
while(scanf("%d%d",&n,&v)==)
{
if(n==&&v==)
break;
memset(b,,sizeof(b));
for(i=;i<n;i++)
scanf("%d%d",&a[i].x,&a[i].y);
sort(a,a+n,cmp);
for(i=a[].x;i<=v;i++)
b[][i]=a[].y;
for(i=;i<n;i++)
{
for(j=a[].x;j<=v;j++)
if(j>=a[i].x)
b[i][j]=max(b[i-][j],b[i-][j-a[i].x]+a[i].y);
else b[i][j]=b[i-][j];
//for(j=0;j<=v;j++)
// printf("%d ",b[i][j]);
// printf("\n");
}
printf("%d\n",b[i-][v]);
}
return ;
}
精简后的代码:
时间:160 内存:232
#include<stdio.h>
int main()
{
int i,j,n,v,c,w;
while(scanf("%d%d",&n,&v)&&n||v)
{
int price[]={};
for(i=;i<n;i++)
{
scanf("%d%d",&c,&w);
for(j=v;j>=c;j--)
if(price[j]<price[j-c]+w)
price[j]=price[j-c]+w;
}
printf("%d\n",price[v]);
}
return ;
}
java:
nyoj 289 苹果 动态规划 (java)的更多相关文章
- nyoj 289 苹果
苹果 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 ctest有n个苹果,要将它放入容量为v的背包.给出第i个苹果的大小和价钱,求出能放入背包的苹果的总价钱最大值. ...
- NYOJ 289 苹果(01背包)
苹果 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 ctest有n个苹果,要将它放入容量为v的背包.给出第i个苹果的大小和价钱,求出能放入背包的苹果的总价钱最大值. ...
- 程序解决十苹果问题 Java
程序解决十苹果问题 Java 题目:10个苹果,其中有9个重量相同,剩余1个相比其它重量不同(或重或轻,不得而知),使用天平比较三次,找出重量特殊的那一个 import org.junit.Test; ...
- nyoj 252 01串 动态规划( java)
当n=2时, 输出 3:当n=3时, 输出 5:当n=4时, 输出 8: #### 分析: 当n=4时,如 0101 符合条件, 当第一个位置是0时,还剩3个位置 ,与n=3时个数相等: 符合条件的为 ...
- NYOJ 10 skiing动态规划心得
这道题目,拿到手中,首先想到的是搜索,但是,后来想了想搜索不知道从哪搜起,就看了一下分类,一看属于动态规划类的,因为以前没有接触过动态规划,所以在网上搜了一下动态规划的思想,看过之后也有想到将它们到周 ...
- nyoj 517 最小公倍数 【java睑板】
我写了一个gcd TL该.然后调用math内gcd,AC该... 思维:它是采取n前面的最小公倍数和n求 1~n的最小公倍数 代码: import java.util.Scanner; import ...
- [POJ1664] 放苹果 (动态规划,组合数学)
题目描述 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分发(5,1,1和1,1,5是同一种方法) 输入输出格式 输入格式: 第一行是测试数据的数目t(0 <= ...
- 一篮子苹果,每天吃一半多一个吃,第十天吃一半多一个后就剩余一个,求一共多少个苹果,JAVA版
/** * @author xuzhu **/public class TestApple { public static void main(String[] args) { int days = ...
- nyoj 73-比大小 (Java, 高精度)
73-比大小 内存限制:64MB 时间限制:3000ms 特判: No 通过数:15 提交数:64 难度:3 题目描述: 给你两个很大的数,你能不能判断出他们两个数的大小呢? 比如1234567891 ...
随机推荐
- 数据结构算法C语言实现(九)--- 拓展:由迷宫问题引申的AI贪吃蛇
一.简述 [开发中]由于期末时间有限,而且要用到后面的最短路径(可能),所以打算小学期在实现这一部分
- Spring BeanUtils的用法
package test; import java.util.Date; import org.springframework.beans.BeanUtils; import test.basic.B ...
- python序列化模块json和pickle
序列化相关 1. json 应用场景: json模块主要用于处理json格式的数据,可以将json格式的数据转化为python的字典,便于python处理,同时也可以将python的字典或列表等对象转 ...
- UEditor上传图片到七牛云储存(java)
我们的网站一般放在虚拟空间或者服务器上,图片如果存在本地目录,会占用很多空间和流量,还增加了负担,好的办法是把图片存放到云储存服务里面,平时用url去拿 云储存:普遍说又拍云和七牛比较好,看到七牛免费 ...
- JPA事务总结
http://www.soso.io/article/65405.html 事务管理是JPA中另一项重要的内容,了解了JPA中的事务管理,能够进一步掌握JPA的使用.事务管理是对一系列操作的管理,它最 ...
- Raspberry Pi 3 --- identify the version of linux kernal file
open it
- 十分钟入门less(翻译自:Learn lESS in 10 Minutes(or less))
十分钟入门less(翻译自:Learn lESS in 10 Minutes(or less)) 注:本文为翻译文章,因翻译水平有限,难免有缺漏不足之处,可查看原文. 我们知道写css代码是非常枯燥的 ...
- Instant Python 中文缩减版
前言 本文主要来自<Python基础教程(第2版)>([挪]Magnus Lie Hetland著,司维 曾军崴 谭颖华译 人民邮电出版社) 中的“附录A 简明版本”,对于其中的有问题之处 ...
- 加载信息,先从数据库取出5条实现分页,鼠标向上滑动触发Ajax再加载5条,达到异步刷新,优化加载。。。
php数据库取数据 <?php include("conn1.php"); include('../function/functions.php'); $page=intva ...
- libuv(不断更新)
/* * Initialize the uv_async_t handle. A NULL callback is allowed. * * Note that uv_async_init(), un ...