এই নিবন্ধে, আমরা n সংখ্যার একটি প্রদত্ত অ্যারের পুনর্বিন্যাস করার সমস্যা নিয়ে আলোচনা করব। মূলত, আমাদের অ্যারে থেকে উপাদান নির্বাচন করতে হবে। প্রতিটি উপাদান নির্বাচন করার জন্য, আমরা কিছু পয়েন্ট পাই যা বর্তমান উপাদানের মান দ্বারা মূল্যায়ন করা হবে * বর্তমান উপাদানের আগে নির্বাচিত কয়েকটি উপাদান। সর্বাধিক পয়েন্ট পেতে আপনার উপাদান নির্বাচন করা উচিত। উদাহরণ −
Input : arr[ ] = { 3, 1, 5, 6, 3 } If we select the elements in the way it is given, our points will be = 3 * 0 + 1 * 1 + 5 * 2 + 6 * 3 + 3 * 4 = 41 To maximize the points we have to select the elements in order { 1, 3, 3, 5, 6 } = 1 * 0 + 3 * 1 + 3 * 2 + 5 * 3 + 6 * 4 = 48(maximum) Output : 48 Input : arr[ ] = { 2, 4, 7, 1, 8 } Output : 63
সমাধান খোঁজার পদ্ধতি
উদাহরণের দিকে তাকিয়ে, আমরা সর্বাধিক পয়েন্ট পেতে এটি পেয়েছি, এবং আমাদের ক্ষুদ্রতম থেকে বৃহত্তম উপাদান নির্বাচন করতে হবে। একটি সমাধান খোঁজার পদ্ধতি হল,
- প্রদত্ত অ্যারেকে আরোহী ক্রমে সাজান।
- সূচী ০ থেকে শেষ পর্যন্ত উপাদান বাছাই শুরু করুন।
- প্রতিটি উপাদান নির্বাচন করে আপনি যে পয়েন্ট পেয়েছেন তা গণনা করুন।
উদাহরণ
#include <bits/stdc++.h> #include <iostream> using namespace std; int main () { int arr[] = { 2, 4, 7, 1, 8 }; int n = sizeof (arr) / sizeof (arr[0]); // sorting the array sort (arr, arr + n); int points = 0; // traverse the array and calculate the points for (int i = 0; i < n; i++) { points += arr[i] * i; } cout << "Maximum points: " << points; return 0; }
আউটপুট
Maximum points: 63
উপরের কোডের ব্যাখ্যা
এই C++ কোড বোঝা সহজ। প্রথমে আমরা অ্যারে বাছাই করছি এবং তারপর একটি ফর লুপ ব্যবহার করে অ্যারেটি অতিক্রম করছি এবং শুরু থেকে শেষ পর্যন্ত প্রতিটি উপাদান নির্বাচন করে অর্জিত পয়েন্ট গণনা করছি।
উপসংহার
এই নিবন্ধে, আমরা সর্বাধিক পয়েন্ট পাওয়ার জন্য একটি অ্যারেতে উপাদান নির্বাচন করার সমস্যা নিয়ে আলোচনা করি যেখানে পয়েন্টগুলি i * arr[i] দ্বারা গণনা করা হয়। আমরা এই সমস্যাটি সমাধান করতে এবং সর্বাধিক পয়েন্ট পেতে একটি লোভী পদ্ধতি প্রয়োগ করি। একই কাজ করার জন্য C++ কোড নিয়েও আলোচনা করুন, আমরা এই কোডটি অন্য যেকোনো ভাষায় লিখতে পারি যেমন C, java, Python, ইত্যাদি। আশা করি এই নিবন্ধটি আপনার কাজে লাগবে।