Coding:取若干个1到n的整数可求和等于整数m,求出所有组合的个数

江南北

关注

阅读 70

2022-07-13


要求

给定整数n,取若干个1到n的整数可求和等于整数m,编程求出所有组合的个数。比如当n=6,m=8时,有四种组合:[2,6], [3,5], [1,2,5], [1,3,4]。限定n和m小于120.

0-1背包问题解法:

#include <iostream>
#include <vector>

using namespace std;
int main()
{
int n,m;
cin>>n>>m;

vector<int> dp(m+1,0);
dp[0]=1;
for(int i=1;i<=n;i++) //注意是1到n
{
for(int j=m;j>=i;j--)
{
dp[j] += dp[j-i];
}
}
cout<<dp[m]<<endl;
return 0;
}


精彩评论(0)

0 0 举报