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