একটি অ্যারে arr দেওয়া আছে। অ্যারের সব রোটেশনের জন্য i*arr[i] এর সাম বের করে স 그중 ম্যাক্সিমামটি প্রিন্ট করতে হবে।
উদাহরণ: arr = {4, 8, 1, 5} -> আউটপুট: ৩৭
ব্যাখ্যা: সব রোটেশন ও তাদের সাম: {4,8,1,5} = 0*4+1*8+2*1+3*5 = 25 {8,1,5,4} = 0*8+1*1+2*5+3*4 = 23 {1,5,4,8} = 0*1+1*5+2*4+3*8 = 37 (ম্যাক্স) {5,4,8,1} = 0*5+1*4+2*8+3*1 = 23
সহজ সমাধান: O(n²) - প্রতিটি রোটেশনের সাম ক্যালকুলেট। দক্ষ সমাধান: O(n) - আগের রোটেশনের সাম থেকে পরবর্তী রোটেশনের সাম ক্যালকুলেট করার ফর্মুলা: nextSum = currentSum - (arraySum - arr[i-1]) + arr[i-1]*(n-1)।
উদাহরণ
#include<iostream>
using namespace std;
int findMax(int a, int b){
if(a>b) return a; return b;
}
int calculateMaxSum(int arr[], int n){
int maxSum = 0, sum = 0;
for (int i=0; i
আউটপুট
The maximum sum of all the rotation of the array is 37
দক্ষ সমাধান (O(n)):
int calculateMaxSum(int arr[], int n){
int arraySum = 0, currentSum = 0, nextSum;
for (int i=0; i