题目的意思是:
有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;
}