কম্পিউটার

C++ কোড রিএনগেজমেন্ট চেক করা যেতে পারে যাতে উপাদানের যোগফল সর্বাধিক x হয়


ধরুন আমাদের কাছে n আকারের A এবং B দুটি অ্যারে আছে এবং আরেকটি সংখ্যা x। আমরা B-তে উপাদানগুলিকে পুনর্বিন্যাস করতে পারি কিনা তা আমাদের পরীক্ষা করতে হবে, যাতে A[i] + B[1] <=x, 0 থেকে n-1 রেঞ্জের সকল i জন্য।

সুতরাং, যদি ইনপুটটি A =[1, 2, 3] এর মত হয়; বি =[1, 1, 2]; x =4, তাহলে আউটপুট হবে True, কারণ B এর মতো যদি [1, 2, 1] সাজানো হয়, তাহলে যোগফলের মান হবে 1 + 1 <=4, 2 + 2 <=4, এবং 3 + 1 <=4 .

পদক্ষেপ

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

n := size of A
ans := 1
sum := 0
for initialize i := 0, when i < n, update (increase i by 1), do:
   sum := A[i] + B[n - i - 1]
   if sum > x, then:
      ans := 0
if ans is non-zero, then:
   return true
Otherwise
   return false

উদাহরণ

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

#include <bits/stdc++.h>
using namespace std;
bool solve(vector<int> A, vector<int> B, int x){
   int n = A.size();
   int ans = 1;
   int sum = 0;
   for (int i = 0; i < n; ++i){
      sum = A[i] + B[n - i - 1];
      if (sum > x)
      ans = 0;
   }
   if (ans)
      return true;
   else
      return false;
}
int main(){
   vector<int> A = { 1, 2, 3 };
   vector<int> B = { 1, 1, 2 };
   int x = 4;
   cout << solve(A, B, x) << endl;
}

ইনপুট

{ 1, 2, 3 }, { 1, 1, 2 }, 4

আউটপুট

1

  1. C++ এ একটি অ্যারেতে অ-পুনরাবৃত্ত (স্বতন্ত্র) উপাদানগুলির সমষ্টি খুঁজুন

  2. একটি সংখ্যাকে C++ এ দুটি প্রচুর সংখ্যার যোগফল হিসাবে প্রকাশ করা যায় কিনা তা পরীক্ষা করুন

  3. একটি সংখ্যাকে C++ এ 2টি ত্রিভুজাকার সংখ্যার যোগফল হিসাবে উপস্থাপন করা যায় কিনা তা পরীক্ষা করুন

  4. একটি সংখ্যাকে C++ এ পরপর সংখ্যার যোগফল হিসাবে প্রকাশ করা যায় কিনা তা পরীক্ষা করুন