int getSum(int* arr, int len) {
int sum = 0;
for (int i = 0; i < len; ++i) {
sum += arr[i];
}
return sum;
}
void difPrint(int* arr, int len, vector<int> vct) {
cout << vct.size() << " =m 数组: ";
for (int i = 0; i < vct.size(); ++i) {
cout << vct[i] << " ";
}
cout << endl;
cout << len - vct.size() << " =n-m 数组: ";
int vid = 0;
for (int i = 0; i < len; ++i) {
if (vct[vid] == arr[i]) {
vid++;
continue;
} else {
cout << arr[i] << " ";
}
}
cout << endl << endl;
}
//vector<int> result;
void findNumsEqSum(int* arr, int step, int len, int curSum, int sum,
vector<int> vct) {
if (!arr || !len || curSum > sum || step == len) {
return;
}
if (sum == curSum) {
difPrint(arr, len, vct);
} else {
vct.push_back(arr[step]);
findNumsEqSum(arr, step + 1, len, curSum + arr[step], sum, vct);
vct.pop_back();
findNumsEqSum(arr, step + 1, len, curSum, sum, vct);
}
}一个整数数组,有n个整数,如何找其中m个数的和等于另外n-m个数的和?
最新推荐文章于 2023-02-22 20:07:34 发布
本文介绍了一个C++程序,该程序包含用于计算整数数组总和的函数getSum,以及一个递归函数findNumsEqSum,用于找出数组中元素组合等于给定目标值的所有情况,并打印这些组合与剩余元素。
4245

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



