top1编程
← 返回题目
题解

【基础】数字的组合

1 条题解

  • 0
    @ 2026-7-29 0:18:11
    #include<bits/stdc++.h>
    using namespace std;
    //数字的组合(01背包问题)
    int dp[100001],a[110],n,m;
    int main(){
    	cin>>n>>m;
    	for(int i=1;i<=n;i++) cin>>a[i];
    	dp[0]=1;
    	for(int i=1;i<=n;i++){//物品的数量
    		for(int j=m;j>=a[i];j--){//从后往前 01背包
    			dp[j]+=dp[j-a[i]];//当前的种类数 加上 把a[i]放进来的种类数
    		}
    	}
    	cout<<dp[m];
    	return 0;
    }
    
    • 1