Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

합이 짝수인 비어 있지 않은 부분 문자열의 길이를 찾는 C++ 프로그램

<시간/>

n개의 요소가 있는 배열 A가 있다고 가정합니다. 합이 짝수이거나 그러한 부분 집합이 없을 때 -1을 반환하도록 요소의 비어 있지 않은 부분 집합의 길이를 찾아야 합니다.

따라서 입력이 A =[1, 3, 7]과 같으면 [1, 3]의 합이 4이므로 출력은 2가 됩니다.

단계

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

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