动态规划法求解0-1背包

#include<stdio.h>

int c[10][100];
int w[10],p[10],x[10];

int RUN(int m,int n)
{
    int i,j;
    for(i=1;i<n+1;i++)
        for(j=1;j<m+1;j++)
        {
            if(w[i]<=j)
            {
                if(p[i]+c[i-1][j-w[i]]>c[i-1][j])
                    c[i][j]=p[i]+c[i-1][j-w[i]];
                else
                    c[i][j]=c[i-1][j];
            }
            else c[i][j]=c[i-1][j];
        }
    printf("背包最大价值 %d\n",c[n][m]);
}

int main()
{
    int n,W;
    int i,j,s;
    for(i=0;i<10;i++) 
        for(j=0;j<100;j++) 
            c[i][j]=0;
    scanf("%d%d",&n,&W);//商品数量 背包容量 
    for(i=1;i<n+1;i++)
        scanf("%d%d",&w[i],&p[i]);//重量 价值 
    RUN(W,n);
}

 

posted @ 2014-06-26 11:41  一只快乐的程序猿[Hui]  阅读(184)  评论(0编辑  收藏  举报