मान लीजिए कि हमारे पास 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