01背包一维数组代码

//https://www.cnblogs.com/Christal-R/p/Dynamic_programming.html
#include<stdio.h>
void Findmax();
int Max(int a,int b);
int v[10],w[10],dp[10],number,capacity;
int main()
{
int i,j;
while(scanf("%d%d",&number,&capacity)!=EOF)
{
for(i=1;i<=number;i++)
scanf("%d%d",&v[i],&w[i]);
Findmax();
printf("%d\n",dp[capacity]);
}
return 0;
}
void Findmax()
{
int i,j;
for(i=1;i<=number;i++)
for(j=capacity;j>=1;j--)
if(j>=v[i])
dp[j]=Max(dp[j-1],dp[j-v[i]]+w[i]);
}
int Max(int a,int b)
{
if(a>b)
return a;
return b;
}

猜你喜欢

转载自blog.csdn.net/hezhiying_/article/details/80184923