1 条题解

  • 0
    @ 2025-4-11 16:51:38

    题目中范围有问题,n取值应该为30,简单的完全背包组合问题

    #include<bits/stdc++.h>
    #define int long long
    using namespace std;
    const int N=1e4 + 10;
    int dp[30][N];
    int a[N];
    signed main(){
    	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
    	int n,m;cin>>n>>m;
    	for(int i=1;i<=n;i++) cin>>a[i],dp[i][a[i]] = 1;
    	for(int i=1;i<=n;i++){
    		for(int j=1;j<=m;j++){
    			if(j>a[i])
    			dp[i][j] = dp[i-1][j] + dp[i][j-a[i]];
    			else
    			dp[i][j] += dp[i-1][j];
    		}
    	}
    	cout<<dp[n][m]<<endl;
    	return 0;
    }
    

    信息

    ID
    119
    时间
    1000ms
    内存
    256MiB
    难度
    7
    标签
    递交数
    154
    已通过
    41
    上传者