分析: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. ecshop /category.php SQL Injection Vul

    catalog . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 Relevant Link: http://sebug.net/vuld ...

  2. 再次深入探索datasource问题?

    datasource现在几乎每个web框架都会有集成,但是对于数据源的设计原理以及应用上,很少进行深入的研究:实际上数据源也是web框架的核心之一了解一下其内涵还是非常重要的. 数据源(Data So ...

  3. python统计nginx脚本信息

    #!/usr/bin/env python # -*- coding: utf-8 -*- import urllib2 import json import subprocess import th ...

  4. POJ 2976 Dropping tests(最大化平均值 or 01整数规划)

    题目链接 忽略运算符逻辑导致奇怪的错误(代码中指明位置了) 输出没加0.5,WA. 还有,注意特殊情况k=0,所以scanf("%d%d", &n, &k)& ...

  5. BZOJ3678: wangxz与OJ

    splay缩点. #include<bits/stdc++.h> #define L(t) (t)->c[0] #define R(t) (t)->c[1] #define F ...

  6. PHP 数组(遍历)

    数组定义$attr = array(); //定义一个空的数组$attr = array(1,2,3,4); //定义一个有值的数组$attr[0]="aa";$attr[1]=& ...

  7. 9.19 JS数组

    数组:相同类型数据的集合强类型语言:1数组里面只能存放相同数据类型的数据     2定义数组的时候需要制定一个长度(可以存放的元素数量)     3内存空间连续集合:1.可以存放任意类型的数据     ...

  8. 9.13 JS循环

    循环:循环操作某一个功能(执行某段代码) 四要素: 循环初始值 循环条件 状态改变 循环体       for  穷举     迭代            i++;等价于i=i+1;  ++I;等价于 ...

  9. Java Map 简介

    AbstractMap, Attributes, AuthProvider, ConcurrentHashMap, ConcurrentSkipListMap, EnumMap, HashMap, H ...

  10. IIS------配置.Net 4.0

    转载: http://blog.csdn.net/mazhaojuan/article/details/7660657