এই সমস্যায়, আমাদের একটি সংখ্যা দেওয়া হয়েছে। আমাদের কাজ হল 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