子数组的最大长度,以使子数组的和在C ++中为偶数

给我们一个整数数组Arr []。目的是找到Arr []的最长子数组,其元素之和为偶数。也就是说,子数组的元素之和是偶数,并且该子数组的长度最长。

输入− Arr [] = {2,3,5,2,6,7}。

输出-子数组的最大长度-4

说明-最大长度子数组是{5,2,6,7}。总和是20,是偶数。

输入− Arr [] = {5,7,7,3,4}。

输出-子数组的最大长度-4

说明-最大长度子数组为{5,7,7,3}。总和是22,是偶数。

以下程序中使用的方法如下

  • 整数数组Arr []用于存储整数。

  • 可变大小用于存储数组的长度。

  • 函数Length(int arr [])检查数组的和是否为偶数。Leng用于存储子数组的长度。

  • 如果返回数组长度n,则计算数组的总和。

  • 现在从第一个元素开始,遍历整个数组,如果找到一个奇数元素,则找到不包括arr [i]的两半的长度。

  • 返回最大长度为子数组的长度。

示例

#include<iostream<

int Length(int arr[], int n){

   int sum = 0, leng = 0;

   //如果整个数组是偶数

   for (int i = 0; i < n; i++)

      sum += arr[i];

   if (sum % 2 == 0) // total sum is already even

      return n;

   //找到一个索引,例如a [i]是奇数

   //并比较两半的长度(不包括

   //a [i]查找最大长度子数组

   for (int i = 0; i < n; i++) {

      if (arr[i] % 2 == 1)

         leng = i>n-i-1?i:n-i-1;

   }

   return leng;

}

int main(){

   int Arr[] = { 1, 2, 6, 2, 4,2 };

   int size = 6;

   printf("Maximum length of subarray such that sum of the subarray is even: %d",Length(Arr, size));

return 0;

}

输出结果

如果我们运行上面的代码,它将生成以下输出-

Maximum length of subarray such that sum of the subarray is even : 5

以上是 子数组的最大长度,以使子数组的和在C ++中为偶数 的全部内容, 来源链接: utcz.com/z/327202.html

回到顶部