关于vector和普通数组
查看原帖
关于vector和普通数组
1458355
CHIHUIZY楼主2025/7/28 20:24

请观察以下代码:

代码(RERE

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main(){
    int n,w;cin>>n>>w;
    vector<int>value(n+5,0);
    vector<int>height(n+5,0);
    vector<int>nums(n+5,0);
    for(int i=1;i<=n;i++){
        cin>>value[i]>>height[i]>>nums[i];
    }
    vector<int>new_value(n+5,0);
    vector<int>new_height(n+5,0);
    int new_n=0;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=nums[i];j*=2){
            new_n++;
            new_value[new_n]=j*value[i];
            new_height[new_n]=j*height[i];
            nums[i]-=j;
        }
        if(nums[i]){
            new_n++;
            new_value[new_n]=nums[i]*value[i];
            new_height[new_n]=nums[i]*height[i];
            nums[i]=0;
        }
    }
    vector<vector<int>>dp(n+5,vector<int>(w+5,0));
    for(int i=1;i<=n;i++){
        for(int j=0;j<=w;j++){
            if(j>=new_height[i]){
                dp[i][j]=max(dp[i-1][j],dp[i-1][j-new_height[i]]+new_value[i]);
            }
        }
    }
    cout<<dp[n][w]<<endl;

    return 0;
}

本人在这一题卡了很久,因为代码过程没有任何的错误,但是却RE了。后面我尝试使用静态数组,结果AC了(没有修改任何的过程),有没有大佬知道这是怎么一回事

记录1(RERE

记录2(ACAC)

2025/7/28 20:24
加载中...