算法模板之01背包问题

来源:互联网 发布:住建部bim大数据库 编辑:程序博客网 时间:2024/06/05 15:45

二维数组的写法:

int w[N],p[N];int dp[M][N];for(int i=0; i<n; i++)    for(int j=0; j<=m; j++)        if(j<w[i])            dp[i+1][j]=dp[i][j];        else            dp[i+1][j]=max(dp[i][j],dp[i][j-w[i]]+p[i]);cout<<dp[n][m]<<endl;

一维数组的写法:

int w[N],p[N],dp[N];for(int i=0; i<n; i++)    cin>>w[i]>>p[i];memset(dp,0,sizeof(dp));for(int i=0; i<n; i++)    for(int j=m; j>=w[i]; j--)        dp[j]=max(dp[j],dp[j-w[i]]+p[i]);cout<<dp[m]<<endl;


原创粉丝点击