मान लीजिए हमारे पास n विशिष्ट तत्वों वाला एक ऐरे A है, और एक अन्य संख्या x है। n सोने के टुकड़े हैं। iवें सोने का वजन A[i] है। हम इन n टुकड़ों को एक-एक करके वजन स्केल पर रखेंगे। लेकिन स्केल में एक असामान्य दोष है: यदि उस पर कुल वजन बिल्कुल x हो जाता है, तो वह फट जाएगा। हमें जांचना है कि क्या हम सभी n सोने के टुकड़ों को किसी क्रम में स्केल पर रख सकते हैं, बिना प्रक्रिया के दौरान स्केल को फटने दिए। यदि संभव है, तो वह क्रम ढूंढें। यदि नहीं, तो "IMPOSSIBLE" मार्क करें।
उदाहरण के लिए, यदि इनपुट A = [1, 2, 3, 4, 8]; x = 6 है, तो आउटपुट [8, 1, 2, 3, 4] होगा, अन्य क्रम भी मान्य हैं।
चरण
इसे हल करने के लिए, हम निम्नलिखित चरणों का पालन करेंगे:
s := 0 n := A का आकार i := 0 से n-1 तक, करें: s := s + A[i] यदि s, x के बराबर है, तो: "IMPOSSIBLE" वापस करें s := 0 i := 0 से n-1 तक, करें: s := s + A[i] यदि s, x के बराबर है, तो: A[i + 1], A[i] प्रिंट करें i बढ़ाएं अगले पुनरावृत्ति पर जाएं 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,