分析: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)的更多相关文章

  1. nyoj 289 苹果

    苹果 时间限制:3000 ms  |  内存限制:65535 KB 难度:3   描述 ctest有n个苹果,要将它放入容量为v的背包.给出第i个苹果的大小和价钱,求出能放入背包的苹果的总价钱最大值. ...

  2. NYOJ 289 苹果(01背包)

    苹果 时间限制:3000 ms  |  内存限制:65535 KB 难度:3   描述 ctest有n个苹果,要将它放入容量为v的背包.给出第i个苹果的大小和价钱,求出能放入背包的苹果的总价钱最大值. ...

  3. 程序解决十苹果问题 Java

    程序解决十苹果问题 Java 题目:10个苹果,其中有9个重量相同,剩余1个相比其它重量不同(或重或轻,不得而知),使用天平比较三次,找出重量特殊的那一个 import org.junit.Test; ...

  4. nyoj 252 01串 动态规划( java)

    当n=2时, 输出 3:当n=3时, 输出 5:当n=4时, 输出 8: #### 分析: 当n=4时,如 0101 符合条件, 当第一个位置是0时,还剩3个位置 ,与n=3时个数相等: 符合条件的为 ...

  5. NYOJ 10 skiing动态规划心得

    这道题目,拿到手中,首先想到的是搜索,但是,后来想了想搜索不知道从哪搜起,就看了一下分类,一看属于动态规划类的,因为以前没有接触过动态规划,所以在网上搜了一下动态规划的思想,看过之后也有想到将它们到周 ...

  6. nyoj 517 最小公倍数 【java睑板】

    我写了一个gcd TL该.然后调用math内gcd,AC该... 思维:它是采取n前面的最小公倍数和n求 1~n的最小公倍数 代码: import java.util.Scanner; import ...

  7. [POJ1664] 放苹果 (动态规划,组合数学)

    题目描述 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分发(5,1,1和1,1,5是同一种方法) 输入输出格式 输入格式: 第一行是测试数据的数目t(0 <= ...

  8. 一篮子苹果,每天吃一半多一个吃,第十天吃一半多一个后就剩余一个,求一共多少个苹果,JAVA版

    /** * @author xuzhu **/public class TestApple { public static void main(String[] args) { int days = ...

  9. nyoj 73-比大小 (Java, 高精度)

    73-比大小 内存限制:64MB 时间限制:3000ms 特判: No 通过数:15 提交数:64 难度:3 题目描述: 给你两个很大的数,你能不能判断出他们两个数的大小呢? 比如1234567891 ...

随机推荐

  1. Beta版本冲刺第七天 12.13

    一.站立式会议照片: 二.项目燃尽图: Android端 后台 三.项目进展: 成 员 昨天完成任务 今天完成任务 问题困难 心得体会 胡泽善 用户评价的查看以及审核 用户详情的加入,并且修改了一些卡 ...

  2. 【Beta】第三次任务发布

    后端(补做) #86 了解社区新建文章.添加评论(回复)的机制.整理成API文档,包括如何请求新建文章.新建评论(回复).如何获取文章内容和评论内容. 验收条件:文档PM要能看懂. 前端(补做) #8 ...

  3. Python基本数据类型之tuple

    一.创建元组: ages = (11, 22, 33, 44, 55) ages = tuple((11, 22, 33, 44, 55)) 元组和列表几乎一样 元组的元素不可修改,但是元组元素的元素 ...

  4. javascript 未来新方法的介绍

    JavaScript1.6数组方法的扩展 var tmp = [1, 2, 3, 4, 5, 3]; console.log('indexOf:找出数组中某一对象的下标,如果没有则为-1'); con ...

  5. 【转载】C++中的基类与派生类

    转自:http://www.cnblogs.com/sujz/articles/2044365.html 派生类的继承方式总结: 继承方式 说明 public 基类的public和protected的 ...

  6. Altium Designer 15 --- Design PCB Frame by Rhinoceros

    step 1: Draw a PCB shape and the main component placed in the PCB. The drawing sheet should be in th ...

  7. CSS3-transform变形功能

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  8. setInterval js

    $('#start_scan').on('click',function(){ if(timer == undefined){ timer = setInterval(scan,1000) start ...

  9. HTTP 传输内容的压缩

    一.HTTP压缩和内容编码的区别 HTTP压缩,在HTTP协议中,其实是内容编码的一种. 在http协议中,可以对内容(也就是body部分)进行编码, 可以采用gzip这样的编码. 从而达到压缩的目的 ...

  10. python 传递结构体指针到 c++ dll

    CMakeLists.txt # project(工程名) project(xxx) # add_library(链接库名称 SHARED 链接库代码) add_library(xxx SHARED ...