水牛♂ToTo

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: :: :: 管理 ::
输入第一行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));
  }
}


posted on 2007-08-29 19:12  saintqdd  阅读(400)  评论(0)    收藏  举报