求数组元素指定的和值
void arrsum(int* arr, int n, int sum, std::vector<std::vector<int> >& _vecsum) { static std::vector<int> _vec; if (0 == sum) { _vecsum.push_back(_vec); } else if (n > 0 && sum > 0) { if (sum >= *arr) { _vec.push_back(*arr); arrsum(arr + 1, n - 1, sum - *arr, _vecsum); //arrsum(arr, n, sum - *arr, _vecsum);//一个元素值可以多次试用 _vec.pop_back(); } arrsum(arr + 1, n - 1, sum, _vecsum); } } int main(int argc, char* argv[]) { std::vector<std::vector<int> > vec; int arr[] = { 2,4,3,5,8 }; arrsum(arr, sizeof(arr) / sizeof(int), 10, vec); return 0; }