用 C++ 查找和为偶数的子数组数量
在这个问题中,我们给定了一个由 N 个元素组成的数组 arr[]。我们的任务是找出和为偶数的子数组。
我们举一个例子来理解这个问题,
输入
arr[] = {2, 1, 3, 4, 2, 5}
输出
28
说明
子数组为 -
{2}, {4}, {2}, {2, 4}, {2, 2}, {1, 3}, {1, 5}, {3, 5}, {4, 2}, {2, 1, 3}, {2, 1, 5}, {2, 3, 5}, {2, 4, 2}, {1, 3, 4}, {1, 3, 2}, {1, 4, 5}, {1, 2, 5}, {3, 4, 5}, {3, 2, 5}, {2, 1, 3, 4}, {2, 1, 3, 2}, {2, 3, 4, 5}, {2, 3, 2, 5}, {2, 4, 2, 5}, {1, 3, 4, 2}, {1, 4, 2, 5}, {3, 4, 2, 5}, {2, 1, 3, 4, 2}, {2, 1, 3, 4, 2, 5}
解决方案
解决这个问题的一个简单方法是使用直接方法,即计算所有子数组及其和。并对和为偶数的子数组增加计数。最后返回计数。
展示我们解决方案工作原理的程序,
示例
#include<iostream> using namespace std; int countEvenSumSubArray(int arr[], int n){ int evenSumCount = 0, sum = 0; for (int i=0; i<=n-1; i++){ sum = 0; for (int j=i; j<=n-1; j++){ sum += arr[j]; if (sum % 2 == 0) evenSumCount++; } } return (evenSumCount); } int main(){ int arr[] = {2, 1, 4, 2}; int n = sizeof (arr) / sizeof (arr[0]); cout<<"The count of Subarrays with even sum is "<<countEvenSumSubArray(arr, n); return (0); }
输出
The number of solutions of the linear equation is 8
广告