ধরুন আমাদের একটি অ্যারে আছে n স্বতন্ত্র উপাদান সহ, এবং আরেকটি সংখ্যা x। n সোনার টুকরা আছে। সোনার ওজন হল A[i]। আমরা ওজন স্কেলে এই n টুকরা রাখব একবারে এক টুকরো। কিন্তু স্কেলটিতে একটি অস্বাভাবিক ত্রুটি রয়েছে:যদি এটির মোট ওজন ঠিক x হয় তবে এটি বিস্ফোরিত হবে। প্রক্রিয়া চলাকালীন স্কেলটি বিস্ফোরিত না করে আমরা কিছু ক্রমে সমস্ত n সোনার টুকরো স্কেলে রাখতে পারি কিনা তা আমাদের পরীক্ষা করতে হবে। যদি আমরা পারি, সেই আদেশটি খুঁজে বের করুন। যদি সম্ভব না হয়, "অসম্ভব" চিহ্নিত করুন।
সুতরাং, যদি ইনপুটটি A =[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,