首页 > 代码库 > 动态规划法求解0-1背包

动态规划法求解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);}