কম্পিউটার

দুটি প্রদত্ত অ্যারে থেকে সর্বাধিক বিন্যাস C++ এ একই ক্রম বজায় রেখে


সমস্যা বিবৃতি

দুটি একই আকারের অ্যারে দেওয়া হয়েছে A[] এবং B[]। টাস্ক হল একই আকারের তৃতীয় অ্যারে তৈরি করা। ফলাফল অ্যারে উভয় অ্যারের থেকে সর্বাধিক n উপাদান থাকা উচিত। এটির প্রথমে A[] এর উপাদান নির্বাচন করা উচিত, তারপর B[] এর উপাদানগুলিকে একই ক্রমে বেছে নেওয়া উচিত যেভাবে সেগুলি আসল অ্যারেতে প্রদর্শিত হয়। যদি সাধারণ উপাদান থাকে, তবে শুধুমাত্র একটি উপাদান res[]-এ উপস্থিত থাকা উচিত এবং অগ্রাধিকার A[]

কে দেওয়া উচিত।

উদাহরণ

যদি ইনপুট অ্যারে −

হয়
arr1[] ={9, 17, 2, 25, 6}arr2[] ={17, 4, 8, 10, 1} তারপর চূড়ান্ত অ্যারে হল:{9, 17, 25, 8, 10} 

অনুগ্রহ করে মনে রাখবেন উপাদান 17 সাধারণ এবং অগ্রাধিকার দেওয়া হয় arr1

কে

অ্যালগরিদম

  • উভয় অ্যারের কপি তৈরি করুন এবং অনুলিপিগুলিকে নিচের ক্রমে সাজান
  • আরআর১-কে অগ্রাধিকার দিয়ে উভয় অ্যারের অনন্য n সর্বাধিক উপাদান বাছাই করতে একটি হ্যাশ ব্যবহার করুন[]
  • খালি হিসাবে ফলাফল অ্যারে শুরু করুন
  • arr1[] এর মধ্য দিয়ে অতিক্রম করুন, হ্যাশের মধ্যে উপস্থিত arr1[]-এর সেই উপাদানগুলি কপি করুন। উপাদানের ক্রম একই রাখার জন্য এটি করা হয়
  • arr2[]-এর জন্য ধাপ 4 পুনরাবৃত্তি করুন। এইবার আমরা শুধুমাত্র সেই উপাদানগুলি বিবেচনা করি যেগুলি arr1[>
  • -এ নেই

উদাহরণ

আসুন এখন একটি উদাহরণ দেখি -

#include নেমস্পেস ব্যবহার করে std;void printArray(vector &arr, int n) { for (int i =0; i  temp1(arr1, arr1 + n); ভেক্টর temp2(arr2, arr2 + n); sort(temp1.begin(), temp1.end(), greater()); sort(temp2.begin(), temp2.end(), greater()); unordered_mapm; int i =0, j =0; যখন (m.size() =temp2[j]) { m[temp1[i]]++; ++আমি; } অন্য { m[temp2[j]]++; ++j; } } ভেক্টর ফলাফল; জন্য (int i =0; i  

আউটপুট

ফাইনাল অ্যারে:9 17 25 8 10

  1. C++-এ দুটি ভিন্ন অ্যারের সাব-অ্যারের সর্বাধিক বা যোগফল

  2. C++ এ বস্তুর প্রদত্ত অ্যারে থেকে সর্বোচ্চ উচ্চতার পিরামিড খুঁজুন

  3. C++-এ দুটি অ্যারে থেকে অনন্য জোড়া সর্বাধিক করা

  4. C++ এ সাজানো ক্রমে দুটি সাজানো না করা অ্যারেকে একত্রিত করা।