惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Microsoft Security Blog
Microsoft Security Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
A
About on SuperTechFans
月光博客
月光博客
Jina AI
Jina AI
F
Fortinet All Blogs
博客园 - 聂微东
The Cloudflare Blog
美团技术团队
B
Blog RSS Feed
N
Netflix TechBlog - Medium
罗磊的独立博客
The GitHub Blog
The GitHub Blog
I
InfoQ
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Apple Machine Learning Research
Apple Machine Learning Research
H
Help Net Security
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
T
The Blog of Author Tim Ferriss
MyScale Blog
MyScale Blog
博客园 - 三生石上(FineUI控件)
宝玉的分享
宝玉的分享
阮一峰的网络日志
阮一峰的网络日志
V
V2EX

博客园 - saintqdd

hdu 1102 pku 2421 解题报告 pku 2777 Count Color 解体报告 石子合并问题 nkoj1139和乘积最大那题一样. A Tour in Loquat Orchard (FZU 2007 ICPC Qualification Round I tzw) 最大黑区域 滑雪 一道经典题,humble number 今天碰到了一个很诡异的题,Alphacode (zoj 2202) 实训以来,到这里的次数少了! 郁闷,乘积最大那题WA原来只是因为我用了pow函数引起的! Smith Number POJ强烈推荐50题 JOJ 2391 words POJ 1014 三十分钟掌握STL STL学习小记 POJ1006,中国剩余定理 POJ1003,简单题
这两天经常碰到dp题,就写了一个0-1背包
saintqdd · 2007-08-29 · via 博客园 - saintqdd

输入第一行N,C,N物品的数量,C背包的大小
下一行输入背包的价值
下一行输入背包的体积

程序如下:
#include<iostream>
typedef struct{
  int v;
  int t;
}mar;
mar arr[1000];
int i;
int N,C;
int dp(int C,int i){
   if(i<0)
      return 0;
   int x,y;
   y=dp(C,i-1);
   if(C>=arr[i].t){
      x=arr[i].v+dp(C-arr[i].t,i-1);
      return x>y?x:y;
   }
   else
      return y;
}
int main(){
  while(scanf("%d%d",&N,&C)!=-1){
    i=0;
    while(i<N){
      scanf("%d",&arr[i++].v);
    }
    i=0;
    while(i<N){
      scanf("%d",&arr[i++].t);
    }
    printf("%d"n",dp(C,N-1));
  }
}