给点一个数组,和一个数字M,判断M是否是数组中的若干个数字的和;
#include <iostream>
#include <vector>
using namespace std;
void findsum(int *pData,int sum,int currsum,vector<int>&vec,int index,int n)
{
if(index>=n || currsum>sum)
return ;
if(sum==currsum)
{
for(int i=0;i<vec.size();++i)
{
cout<<vec[i]<<" ";
}
cout<<endl;
return ;
}
for(int i=index+1;i<n;++i)
{
vec.push_back(pData[i]);
findsum(pData,sum,currsum+pData[i],vec,i,n);
vec.pop_back();
}
}
int main()
{
int pData[]={1,2,3,4,5,6};
int sum=10;
int n=sizeof(pData)/sizeof(*pData);
vector<int> vec;
for(int i=0;i<n;++i)
{
int currsum=0;
vec.push_back(pData[i]);
findsum(pData,sum,currsum+pData[i],vec,i,n);
vec.pop_back();
}
return 0;
}