用 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

更新于: 2021 年 3 月 15 日

319 次浏览

开启你的 职业 生涯

完成课程并获得认证

开始使用
广告