मान लीजिए कि हमारे पास n विशिष्ट तत्वों के साथ एक सरणी A है, और दूसरी संख्या x है। सोने के n टुकड़े हैं। ith सोने का वजन A [i] है। हम इस n पीस को वेट स्केल पर एक बार में एक पीस में रखेंगे। लेकिन पैमाने में एक असामान्य दोष है:यदि उस पर कुल भार बिल्कुल x है, तो यह फट जाएगा। हमें यह जांचना होगा कि क्या हम प्रक्रिया के दौरान पैमाने में विस्फोट किए बिना सभी n सोने के टुकड़ों को किसी क्रम में स्केल पर रख सकते हैं। अगर हम कर सकते हैं, तो उस आदेश को खोजें। अगर संभव न हो तो "IMPOSSIBLE" का निशान लगा दें।
इसलिए, यदि इनपुट ए =[1, 2, 3, 4, 8] जैसा है; x =6, तो आउटपुट [8, 1, 2, 3, 4] होगा, अन्य ऑर्डर भी मान्य हैं
कदम
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
s := 0 n := size of A for initialize i := 0, when i < n, update (increase i by 1), do: s := s + A[i] if s is same as x, then: return "IMPOSSIBLE" s := 0 for initialize i := 0, when i < n, update (increase i by 1), do: s := s + A[i] if s is same as x, then: print A[i + 1], A[i] (increase i by 1) Ignore following part, skip to the next iteration print A[i]
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
#include <bits/stdc++.h>
using namespace std;
void solve(vector<int> A, int x) {
int s = 0;
int n = A.size();
for (int i = 0; i < n; i++) {
s += A[i];
}
if (s == x) {
cout << "IMPOSSIBLE";
return;
}
s = 0;
for (int i = 0; i < n; i++) {
s += A[i];
if (s == x) {
cout << A[i + 1] << ", " << A[i] << ", ";
i++;
continue;
}
cout << A[i] << ", ";
}
}
int main() {
vector<int> A = { 1, 2, 3, 4, 8 };
int x = 6;
solve(A, x);
} इनपुट
{ 1, 2, 3, 4, 8 }, 6 आउटपुट
1, 2, 4, 3, 8,