1-0揹包問題

每一階段的決策,有對應的狀態;io

#include<stdio.h>
#define max 100
int v[max],w[max],weight,value,n;
int d[max][max];
int pick()
{
 int i,j;
 for(i=1;i<=n;i++)
  for(j=0;j<=weight;j++)
  {
   d[i][j]=(i==1?0:d[i-1][j]);
   if(j>=w[i])
   {
    d[i][j]=d[i][j]>d[i-1][j-w[i]]+v[i]?d[i][j]:d[i-1][j-w[i]]+v[i];
    
   }
  }
    printf("該包最多能裝價值爲:%d 的東西",d[n][weight]);
 return 0;
}di

int main()
{
      int i;
   //freopen("in.txt","r",stdin);
      scanf("%d %d",&n,&weight);
   for(i=1;i<=n;i++)
    scanf("%d %d",&v[i],&w[i]);
   pick();
   return 0;return

}printf

相關文章
相關標籤/搜索