码迷,mamicode.com
首页 > 其他好文 > 详细

NYOJ 860 又见01背包

时间:2015-07-03 20:36:44      阅读:120      评论:0      收藏:0      [点我收藏+]

标签:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define Min(a,b) a<b?a:b
const int N=10003;
int dp[N];
int weight[102];
int value[102];
int main()
{
  int n,w;
  while(scanf("%d%d",&n,&w)==2)
  {
    int sum=0;
    for(int i=0;i<n;i++)
    {
      scanf("%d%d",&weight[i],&value[i]);
      sum+=value[i]; //sum保存所有的价值之和

    }
    memset(dp,0x3f3f,sizeof(dp)); //初始化数组要为无穷大,因为是要找最小值,所以默认无穷大
    dp[0]=0;
    for(int i=0;i<n;i++)
    {
      for(int j=sum;j>=value[i];j--)
      dp[j]=Min(dp[j],dp[j-value[i]]+weight[i]);
    }
    for(int i=sum;i>=0;i--)
    if(dp[i]<=w)
    {
      printf("%d\n",i);
      break;
    }
  }
}

NYOJ 860 又见01背包

标签:

原文地址:http://www.cnblogs.com/mycapple-zgs-111411/p/4619492.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!