#include<iostream.h>
#include<string.h>
int f[6][501][101];

int v[6] = ...{0,30,50,10,23,130};
int w[6] = ...{0,3,8,2,5,20};
int c[6] = ...{0,10,10,10,8,5};
int t[6] = ...{0,4,5,2,3,11};
const int maxv = 400;
const int maxw = 10;
const int maxn = 5;
int solve(int n , int x, int y)
...{
if(f[n][x][y] >=0)
return f[n][x][y];
if( n ==0 || x ==0 || y == 0)
f[n][x][y] = 0;
else
...{
int maxi = c[n];
if(x / v[n] < maxi)
maxi = x / v[n];
if(y / w[n] < maxi )
maxi = y / w[n];
for(int i =0 ; i <= maxi ; ++i)
...{
if ((solve(n-1,x- i * v[n],y - i * w[n]) + i * t[n] ) > f[n][x][y] )
f[n][x][y] = solve(n-1,x- i * v[n],y - i * w[n]) + i * t[n];
}
}
return f[n][x][y] ;
}
void main()
...{
memset(f,0xff,sizeof(f));
int ans = 0;
for(int x = 1 ; x <= maxv ; ++x)
for(int y = 1 ; y <= maxw ; ++y)
...{
if( solve(5,x,y) > ans )
ans = solve(5,x,y);
}
cout<<ans;
}
2364

被折叠的 条评论
为什么被折叠?



