zoukankan      html  css  js  c++  java
  • nyoj--289--苹果(01背包)

    苹果

    时间限制:3000 ms  |  内存限制:65535 KB
    难度:3
    描述

    ctest有n个苹果,要将它放入容量为v的背包。给出第i个苹果的大小和价钱,求出能放入背包的苹果的总价钱最大值。


    输入
    有多组测试数据,每组测试数据第一行为2个正整数,分别代表苹果的个数n和背包的容量v,n、v同时为0时结束测试,此时不输出。接下来的n行,每行2个正整数,用空格隔开,分别代表苹果的大小c和价钱w。所有输入数字的范围大于等于0,小于等于1000。
    输出
    对每组测试数据输出一个整数,代表能放入背包的苹果的总价值。
    样例输入
    3 3
    1 1
    2 1
    3 1
    0 0
    样例输出
    2
    来源

    动态规划经典问题



    #include<stdio.h>
    #include<string.h>
    #include<algorithm>
    using namespace std;
    int dp[100000];
    int n,v;
    struct node
    {
    	int size,val;
    }edge[10000];
    int main()
    {
    	while(scanf("%d%d",&n,&v),n&&v)
    	{
    		memset(dp,0,sizeof(dp));
    		for(int i=0;i<n;i++)
    		scanf("%d%d",&edge[i].size,&edge[i].val);
    		for(int i=0;i<n;i++)
    		{
    			for(int j=v;j>=edge[i].size;j--)
    			{
    				dp[j]=max(dp[j],dp[j-edge[i].size]+edge[i].val);
    			}
    		}
    		printf("%d
    ",dp[v]);
    	}
    	return 0;
    }



  • 相关阅读:
    java web(七)Cookie的简单使用
    java web(六)多个请求对应一个Servlet
    <十六>JDBC_使用 DBUtils 编写通用的DAO
    <十五>JDBC_使用 DBUtils 进行更新、查询操作
    附加作业
    第五周作业
    第八周作业
    第七周作业
    第一周作业
    第六周作业
  • 原文地址:https://www.cnblogs.com/playboy307/p/5273677.html
Copyright © 2011-2022 走看看