文章

21

粉丝

0

获赞

12

访问

3.3k

头像
简单背包问题 题解:01背包的特殊化,价值和重量是1:1
P1035
发布于2025年6月10日 20:16
阅读数 83

#include<iostream>
#include<cstring>
using namespace std;

int dp[1001][1001];//dp数组里存重量,利用01背包解题,只不过这里的价值和重量是1:1
int w[1001];

int main(){
    int s,n;
    while(cin>>s>>n){
        for(int i=1;i<=n;i++){
            cin>>w[i];
        }
        memset(dp,0,sizeof(dp));
        //dp就两个操作:装和不装
        for(int i=1;i<=n;i++){
            for(int j=s;j>=0;j--){
                dp[i][j]=dp[i-1][j];//默认不能装
                if(j>=w[i])    dp[i][j]=max(dp[i-1][j-w[i]]+w[i],dp[i-1][j]);
         &nbs...

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发