HDU2602二维

来源:互联网 发布:mac 软件更新显示暂停 编辑:程序博客网 时间:2024/05/15 06:29
#include <stdio.h>#include <algorithm>#include <iostream>using namespace std;int dp[1001][1001];//有时候放到外面成为全局变量就不会出现栈溢出的错误了。int x[1001];//价值int y[1001];//体积int max(int a,int b){if(a < b)return b;elsereturn a;}int main(){int T,n,v,i,j;scanf("%d",&T);while(T--){memset(dp,0,sizeof(dp));//因为题目的要求可以是不全装满,所以可以初始化要为0memset(x,0,sizeof(x));memset(y,0,sizeof(y));scanf("%d%d",&n,&v);for(i=1;i<=n;i++){scanf("%d",&x[i]);//输入价值}for(i=1;i<=n;i++)//最好从一开始,这样就能够和后面的输出统一{scanf("%d",&y[i]);//输入体积}for(i=1;i<=n;i++)//每个价值在任何体积下都要算一下{for(j=0;j<=v;j++)//题目的要求可以是不全装满{if(j >= y[i])//如果可以可以装进去{dp[i][j] = max(dp[i-1][j],dp[i-1][j-y[i]]+x[i]);//本题的dp方程}else//在这个体积下不能再装进去{dp[i][j] = dp[i-1][j];//注意这里的j还是不变的,并且这一步是不能缺少的;}}}printf("%d\n",dp[n][v]);}return 0;}

0 0
原创粉丝点击