这题为啥我用数组过不了,换成vector就过了???

#include<bits/stdc++.h>
using namespace std;
int n,m;
signed main()
{
    cin>>n>>m;
    vector<int>w(n);
    for(int i=0;i<n;i++)
        cin>>w[i];
    vector<int>f(m+1,0);
    for(int i=0;i<n;i++)
        for(int v=m;v>=w[i];v--)
            f[v]=max(f[v-w[i]]+w[i],f[v]);
    cout<<f[m]<<endl;
    return 0;
}
/*
5 10
7 2 6 5 4
*/

2 条评论

  • @ 2023-09-03 07:19:42
    //我是用数组+动规过的
    //代码见下
    #include<bits/stdc++.h>
    using namespace std;
    int n,m,a[100005],dp[100005],ans=0;
    int main()
    {
        cin>>n>>m;
        for(int i=1;i<=n;i++)
            cin>>a[i];
        for(int i=1;i<=n;i++)
            for(int j=m;j>=1;j--)
                if(j>=a[i])
                    dp[j]=max(dp[j],dp[j-a[i]]+a[i]);
        cout<<dp[m];
        return 0;
    }
    
  • 上面的是AC的

    #include<bits/stdc++.h>
    using namespace std;
    long long n,m,w[25],f[25000000];
    signed main()
    {
        cin>>n>>m;
        for(int i=1;i<=n;i++)
            cin>>w[i];
        for(int i=1;i<=n;i++)
            for(int v=m;v>=w[i];v--)
                f[v]=max(f[v-w[i]]+w[i],f[v]);
        cout<<f[m]<<endl;
        return 0;
    }
    /*
    5 10
    7 2 6 5 4
    */
    ```这是WA的
    
  • 1

信息

ID
1572
难度
7
分类
(无)
标签
递交数
15
已通过
8
通过率
53%
被复制
6
上传者