কম্পিউটার

C++ এ সন্নিহিত উপাদানগুলির পার্থক্যের সর্বোচ্চ যোগফল


এই সমস্যায়, আমাদের একটি সংখ্যা দেওয়া হয়েছে। আমাদের কাজ হল C++-এ সন্নিহিত উপাদানগুলির পার্থক্যের সর্বাধিক যোগফল খুঁজে বের করার জন্য একটি প্রোগ্রাম তৈরি করা।

সমস্যা বর্ণনা

আমরা সমস্ত পারমুটেশন অ্যারেগুলির সন্নিহিত উপাদানগুলির মধ্যে পরম পার্থক্যের সর্বাধিক যোগফল খুঁজে পাব৷

সমস্যাটি বোঝার জন্য একটি উদাহরণ নেওয়া যাক,

ইনপুট

N = 4

আউটপুট

7

ব্যাখ্যা

All permutations of size 4 are :
{1, 2, 3, 4} = 1 + 1 + 1 = 3
{1, 2, 4, 3} = 1 + 2 + 1 = 4
{1, 3, 2, 4} = 2 + 1 + 2 = 5
{1, 3, 4, 2} = 2 + 1 + 2 = 5
{1, 4, 2, 3} = 3 + 2 + 1 = 6
{1, 4, 3, 2} = 3 + 1 + 1 = 5
{2, 1, 3, 4} = 1 + 2 + 1 = 4
{2, 1, 4, 3} = 1 + 3 + 1 = 5
{2, 3, 1, 4} = 1 + 2 + 3 = 6
{2, 3, 4, 1} = 1 + 1 + 3 = 5
{2, 4, 1, 3} = 2 + 3 + 2 = 7
{2, 4, 3, 1} = 2 + 1 + 2 = 5
{3, 1, 2, 4} = 2 + 1 + 2 = 5
{3, 1, 4, 2} = 2 + 3 + 2 = 7
{3, 2, 1, 4} = 1 + 1 + 3 = 5
{3, 2, 4, 1} = 1 + 2 + 3 = 6
{3, 4, 1, 2} = 1 + 3 + 1 = 5
{3, 4, 2, 1} = 1 + 2 + 1 = 4
{4, 1, 2, 3} = 3 + 1 + 1 = 5
{4, 1, 3, 2} = 3 + 2 + 1 = 6
{4, 2, 1, 3} = 2 + 1 + 2 = 5
{4, 2, 3, 1} = 2 + 1 + 2 = 5
{4, 3, 1, 2} = 1 + 2 + 1 = 4
{4, 3, 2, 1} = 1 + 1 + 1 = 3

সমাধান পদ্ধতি

এই ধরনের সমস্যা সমাধানের জন্য, আমাদেরকে পারমুটেশনের সাধারণ যোগফল খুঁজে বের করতে হবে।

এখানে, N-এর বিভিন্ন মানের জন্য সন্নিহিত উপাদানগুলির পার্থক্যের সর্বাধিক যোগফলের কিছু মান রয়েছে।

N = 2, maxSum = 1
N = 3, maxSum = 3
N = 4, maxSum = 7
N = 5, maxSum = 11
N = 6, maxSum = 17
N = 7, maxSum = 23
N = 8, maxSum = 31

এই যোগফলটি N + N পদের যোগফল

এর উপর নির্ভরশীল একটি যোগের মত দেখাচ্ছে

maxSum =S(N) + F(N) S(N) =n(n-1)/2, এবং F(N) হল N

এর একটি অজানা ফাংশন

S(N), maxSum(N) ব্যবহার করে F(N) খুঁজে বের করা যাক।

F(2) = 0
F(3) = 0
F(4) = 1
F(5) = 1
F(6) = 2
F(7) = 2
F(8) = 3

এখান থেকে, আমরা জানতে পারি যে F(N) হল Int(N/2 - 1)। F(N) N এর প্রতি সেকেন্ড মানের জন্য বৃদ্ধি পায় এবং প্রাথমিকভাবে 2 এবং 3 এর জন্য এটি শূন্য হয়।

এটি maxSum,

এর জন্য সূত্র তৈরি করে
maxSum = N(N-1)/2 + N/2 - 1
maxSum = N(N-1)/2 + N/2 - 2/2
maxSum = ( N(N-1) + N - 2 )/2
maxSum = ( (N^2) - N + N - 2 )/2
maxSum = ((N^2) - 2 )/2

এই সূত্রটি ব্যবহার করে, আমরা N.

এর যেকোনো প্রদত্ত মানের সর্বাধিকসম মান খুঁজে পেতে পারি

উদাহরণ

আমাদের সমাধানের কাজ চিত্রিত করার জন্য প্রোগ্রাম,

নেমস্পেস std;int calcMaxSumofDiff(int N){ int maxSum =0 ব্যবহার করে
#include <iostream>
using namespace std;
int calcMaxSumofDiff(int N){
   int maxSum = 0;
   maxSum = ((N*N) - 2) /2 ;
   return maxSum;
}
int main(){
   int N = 13;
   cout<<"The maximum sum of difference of adjacent elements is "<<calcMaxSumofDiff(N);
   return 0;
}

আউটপুট

The maximum sum of difference of adjacent elements is 83

  1. বৃত্তাকার অ্যারেতে সর্বাধিক যোগফল যাতে C++ এ দুটি উপাদান সংলগ্ন থাকে না

  2. C++ এ সর্বোচ্চ গড় সাবারে I

  3. C++ এ সর্বাধিক 3টি অ-ওভারল্যাপিং সাবাররে

  4. C++-এ K-সংযুক্তি সর্বোচ্চ যোগফল