কম্পিউটার

অ্যারে সাজানোর জন্য অপারেশন গণনা করার জন্য C++ কোড


ধরুন আমাদের n উপাদান সহ একটি অ্যারে A আছে (n হল বিজোড়)। A-তে প্রথম প্রাকৃতিক সংখ্যার একটি স্থানান্তর রয়েছে। একটি ফাংশন f(i) আছে এটি 0 থেকে n-2 রেঞ্জে একক আর্গুমেন্ট i নেয় এবং অপারেশনটি করে:A[i]> A[i+1] হলে, A[i] এবং A[ এর মানগুলি অদলবদল করুন i+1]। প্রথমবার অ্যারে সাজানোর জন্য আমাদের পুনরাবৃত্তির সংখ্যা গণনা করতে হবে।

সুতরাং, যদি ইনপুটটি A =[4, 5, 7, 1, 3, 2, 6] এর মত হয়, তাহলে আউটপুট হবে 5, কারণ প্রতিটি পুনরাবৃত্তির পরে অ্যারে স্টেট এরকম:[4, 5, 1, 7, 2, 3, 6], [4, 1, 5, 2, 7, 3, 6], [1, 4, 2, 5, 3, 7, 6], [1, 2, 4, 3, 5, ৬, ৭], [১, ২, ৩, ৪, ৫, ৬, ৭]।

পদক্ষেপ

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

n :=Af এর আকার :=0Ans :=0 আরম্ভ করার জন্য Ans :=0, do:f :=0 আরম্ভ করার জন্য j :=0, যখন j  A[j + 1], তাহলে:f :=1 যদি না হয় f অ-শূন্য হয়, তাহলে:j শুরু করার জন্য লুপ থেকে বেরিয়ে আসুন :=(Ans AND 1), যখন j  A[j + 1], তারপর:A[j] এবং A[j + 1] (1 দ্বারা Ans বাড়ান) উত্তর দিন 

উদাহরণ

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

#include নেমস্পেস ব্যবহার করে std;int solve(vector A){ int n =A.size(); bool f =0; int Ans =0; জন্য (উত্তর =0;;){ f =0; (int j =0; j  A[j + 1]) f =1; যদি (!f) বিরতি; জন্য (int j =(Ans &1); j  A[j + 1]) swap(A[j], A[j + 1]); উত্তর ++; } রিটার্ন উত্তর;}int main(){ vector A ={ 4, 5, 7, 1, 3, 2, 6}; cout < 

ইনপুট

{ 4, 5, 7, 1, 3, 2, 6 }

আউটপুট

5

  1. C++ এ সাজানো বাইনারি অ্যারেতে 1 এর সংখ্যা গণনা করুন

  2. C++ এ অ্যারের XOR-কে শূন্য করার জন্য ন্যূনতম অপারেশন

  3. C++-এ অ্যারের GCD-কে k-এর গুণিতক করার জন্য ন্যূনতম ক্রিয়াকলাপ

  4. C++ এ একটি সাজানো অ্যারেতে পরম স্বতন্ত্র গণনা?