求数组元素和为sum的不同组合情况
方法一:循环法
代码如下
#include<iostream>
#include<vector>
using namespace std;
int main()
{
int n, sum;
cin >> n >> sum;
vector<long long> a(sum + 1);
vector<int> b(n);
for (int i = 0; i<n; i++)
cin >> b[i];
a[0] = 1;
for (int i = 0; i < n; i++)
{
for (int j = sum; j >= b[i]; j--)
a[j] += a[j - b[i]]; //建立辅助数组a[]记录组合情况
}
cout << a[sum] << endl;
return 0;
}
本文介绍了一种使用循环法计算数组中元素组合之和的方法。通过建立辅助数组记录每一步的组合情况,最终得到所有可能组合的数量。

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



