寻找非空且和为偶数的子串长度的 C++ 程序


假设我们有一个包含 n 个元素的数组 A。我们必须找到其元素的一个非空子集,其元素之和为偶数。如果没有这样的子集,则返回 -1。

因此,如果输入类似于 A = [1, 3, 7],则输出将是 2,因为 [1, 3] 的和为 4。

步骤

为此,我们将按照以下步骤进行 −

n := size of A
for initialize i := 0, when i < n, update (increase i by 1), do:
   if A[i] mod 2 is same as 0, then:
      k := i + 1
if n is 1 AND k is 0, then:
   return -1
otherwise when k is not equal to 0, then:
   return 1
Otherwise
   return 2

示例

让我们看看以下实现来加深理解 −

#include <bits/stdc++.h>
using namespace std;

int solve(vector<int> A) {
   long n = A.size(), k = 0;
   for (long i = 0; i < n; i++) {
      if (A[i] % 2 == 0) {
         k = i + 1;
      }
   }
   if (n == 1 & k == 0) {
      return -1;
   }
   else if (k != 0) {
      return 1;
   } else {
      return 2;
   }
}
int main() {
   vector<int> A = { 1, 3, 7 };
   cout << solve(A) << endl;
}

输入

{ 1, 3, 7 }

输出

2

更新日期: 2022-03-04

108 次浏览

开启您的 职业 道路

通过完成课程获得认证

开始
广告