使用C ++中允许重复的数组元素求和N的方法
在这个问题中,我们得到了一个由整数和数字N组成的数组。我们的任务是计算通过添加数组元素可以生成N的方法总数。允许所有组合和重复。
让我们举个例子来了解这个问题,
输入项
arr = {1, 3, 5} N = 6
输出结果
8
说明
的方式是-
5+1, 1+5, 3+3, 3+1+1+1, 1+3+1+1, 1+1+3+1, 1+1+1+3, 1+1+1+1+1+1
为了解决这个问题,我们需要使用不同的方法,因为所有类型的组合都将得到不同的对待,因此,如果数量是数组4个元素的总和,则可以考虑4种不同的方式(如示例所示)。为了解决这个问题,我们需要使用动态编程方法,下面的程序将展示实现。
示例
#include <iostream>#include <cstring>
using namespace std;
int arraySumWays(int array[], int size, int N){
int count[N + 1];
memset(count, 0, sizeof(count));
count[0] = 1;
for (int i = 1; i <= N; i++)
for (int j = 0; j < size; j++)
if (i >= array[j])
count[i] += count[i - array[j]];
return count[N];
}
int main() {
int array[] = {1, 5, 6};
int size = sizeof(array) / sizeof(array[0]);
int N = 7;
cout<<"Total number of ways inwhich "<<N<<" can be generated using sum of elements of array is " <<arraySumWays(array, size, N);
return 0;
}
输出结果
Total number of ways inwhich 7 can be generated using sum of elements of array is 6
以上是 使用C ++中允许重复的数组元素求和N的方法 的全部内容, 来源链接: utcz.com/z/352495.html