给定一个正整数s,接下来输入n个正整数,,求有多少组合的和为是,C++代码
时间: 2024-03-21 19:41:59 浏览: 311
求n个数的排列使得相邻的两个数的和为素数!C++代码
5星 · 资源好评率100%
以下是一个计算有多少组合的和为给定值的 C++ 代码:
```cpp
#include <iostream>
#include <vector>
using namespace std;
// 递归函数
int count(vector<int>& nums, int target, int index, int sum) {
// 边界条件
if (index == nums.size()) {
return (sum == target) ? 1 : 0;
}
// 递归
int count1 = count(nums, target, index + 1, sum); // 不选当前数
int count2 = count(nums, target, index + 1, sum + nums[index]); // 选当前数
return count1 + count2;
}
int main() {
int s, n;
cin >> s >> n;
vector<int> nums(n);
for (int i = 0; i < n; i++) {
cin >> nums[i];
}
int count = count(nums, s, 0, 0);
cout << "有 " << count << " 组合的和为 " << s << endl;
return 0;
}
```
这个代码使用了递归来枚举所有可能的组合,对于每个数,可以选择选或不选,递归到最后,如果得到的和等于目标值,则返回 1,否则返回 0。最终将所有可能的情况的返回值相加即可得到答案。
阅读全文