কম্পিউটার

বৃহত্তম বিভাজ্য জোড়া উপসেট খুঁজে পেতে C++ প্রোগ্রাম


একটি সমস্যা সমাধান করার জন্য যেখানে আমাদের আলাদা উপাদান নিয়ে গঠিত একটি অ্যারে দেওয়া হয়েছে। এখন আমাদের কাজ হল উপসেটটি খুঁজে বের করা যাতে প্রতিটি জোড়া সমানভাবে বিভাজ্য হয়, অর্থাৎ প্রতিটি বড় উপাদান প্রতিটি ছোট উপাদান দ্বারা বিভাজ্য হয়।

ইনপুট:arr[] ={10, 5, 3, 15, 20}আউটপুট :3 ব্যাখ্যা:বৃহত্তম উপসেট হল 10, 5, 20.10 হল 5 দ্বারা বিভাজ্য, এবং 20 হল 10 দ্বারা বিভাজ্য। ইনপুট :arr[] ={18, 1, 3, 6, 13, 17}আউটপুট:4 ব্যাখ্যা:বৃহত্তম উপসেট হল 18, 1, 3, 6, পরবর্তীতে, 3 1,6 দ্বারা 3 এবং 18 দ্বারা 6 দ্বারা বিভাজ্য৷ 

আমরা এই সমস্যার উত্তর খুঁজতে ডায়নামিক প্রোগ্রামিং প্রয়োগ করব, এবং আমরা দেখব কিভাবে।

সমাধান খোঁজার পদ্ধতি

এই পদ্ধতিতে, আমরা আমাদের অ্যারেকে আরোহী ক্রমে সাজাতে যাচ্ছি। এখন আমরা শেষের জন্য শুরু করে অ্যারের মাধ্যমে চালাচ্ছি। এখন আমরা একটি dp অ্যারে বজায় রাখি যেখানে বৃহত্তম উপসেটের আকার থাকবে যেখানে ith উপাদানটি সবচেয়ে ছোট। তারপর আমরা আমাদের ডিপি অ্যারে থেকে সর্বোচ্চ মান ফেরত দিই।

উদাহরণ

#include নেমস্পেস ব্যবহার করে std;int largeSubsetPair(int *a, int n){ int dp[n]; // এটি ith সূচক dp[n - 1] =1 থেকে শুরু করে বৃহত্তম উপসেট সংরক্ষণ করতে চলেছে; // যেহেতু শেষ উপাদানটি বৃহত্তম তাই এর উপসেটের আকার হল 1 int বৃহত্তম =0; // উত্তর (int i =n - 2; i>=0; i--) { int maxi =0; // নেওয়া সর্বোচ্চ =0; (int j =i + 1; j  

আউটপুট

4

উপরের কোডের ব্যাখ্যা

এই পদ্ধতিতে, আমরা এখন ডায়নামিক প্রোগ্রামিং ব্যবহার করে সমস্যার সমাধান করি। প্রথমত, আমরা এখন আমাদের অ্যারে সাজান। যেহেতু আমরা এখন আমাদের অ্যারে সাজিয়েছি, আমরা একটি অ্যারে ডিপি তৈরি করেছি যা আগের সব বড় উপসেট সংরক্ষণ করবে৷

এখন আমরা এটিতে আমাদের অ্যারের শেষ থেকে শুরু করি। আমরা প্রথমে অনুমান করি যে আমাদের বর্তমান উপাদানটি সর্বনিম্ন এবং এখন অন্যান্য গুণিতকগুলির জন্য পরীক্ষা করুন যেহেতু আমরা এটির আগে একটি গুণের সম্মুখীন হই। আমরা উল্টো পথে যাত্রা করছি, তাই এর মানে আমরা আগে সেই উপাদানটির সম্মুখীন হয়েছি। আমরা এখন আমাদের ডিপি অ্যারের মধ্যে তাদের বৃহত্তম উপসেট আকার সংরক্ষণ করেছি। আমরা আমাদের বর্তমান উপাদানের dp-এ এই উপাদানটি যোগ করি এবং এভাবেই আমরা এগিয়ে যাই।

উপসংহার

এই টিউটোরিয়ালে, আমরা ডায়নামিক প্রোগ্রামিং ব্যবহার করে সবচেয়ে বড় বিভাজ্য জোড়া উপসেট খুঁজে পেতে একটি সমস্যার সমাধান করি। আমরা এই সমস্যার জন্য C++ প্রোগ্রাম এবং সম্পূর্ণ পদ্ধতি (স্বাভাবিক) শিখেছি যার মাধ্যমে আমরা এই সমস্যার সমাধান করেছি। আমরা অন্যান্য ভাষা যেমন সি, জাভা, পাইথন এবং অন্যান্য ভাষায় একই প্রোগ্রাম লিখতে পারি। আমরা আশা করি আপনার এই টিউটোরিয়ালটি সহায়ক হবে৷


  1. C++ এ একটি লাইনের মধ্যবিন্দু খুঁজে বের করার জন্য প্রোগ্রাম

  2. C++ এ ত্রিভুজের সেন্ট্রোয়েড খুঁজে বের করার প্রোগ্রাম

  3. C++ এ একটি পেন্টাগনের এলাকা খুঁজে বের করার প্রোগ্রাম

  4. C++ এ সমান্তরালগ্রামের ক্ষেত্রফল বের করার প্রোগ্রাম