题目的意思是:
有n个数,给我们一个和m。要求从n个数中抽取若干个数(>=1),使得这些数的和为m。求符合条件的组合的数目。
参考代码:
#include<iostream>
using namespace std;
const int num[10] = {3,2,1,4,5,6,7,8,9,10};
const int sum = 10;
const int n=10;
int main()
{
int i,j;
int result[sum+1]={0};
int temp[sum+1]={0};
for(i=0; i<n; i++)
{
if(num[i]>sum)
continue;
else
{
for(j=0; j<sum+1; j++)
{
temp[j]=result[j];
}
temp[0]=1;
for(j=0;j<sum+1;j++)
{
if( (j+num[i])<=sum)
{
result[j+num[i]] += temp[j];
}
}
}
}
cout<<result[sum];
return 0;
}
本文探讨了如何在给定的数集中,找出所有可能的组合,使得这些数的和等于指定的m。通过使用动态规划的方法,我们能够有效地计算出满足条件的组合数量。
1万+

被折叠的 条评论
为什么被折叠?



