今天继续刷牛客真题,求和为给定整数的集合有多少种。
分析:
01背包问题
问题:
1、找规律;
附上C++代码:
#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++)
{
for(int j=m;j>=i;j--)
dp[j]+=dp[j-i];
}
cout<<dp[m]<<endl;
return 0;
}
附上Python代码:
n,m=map(int,input().split())
t=[0]*(m+1)
t[0]=1
for i in range(1,n+1):
for j in range(m,i-1,-1):
t[j]+=t[j-i]
print(t[-1])