इस समस्या में, हमें एक सरणी गिरफ्तारी [] और एक पूर्णांक k दिया जाता है। हमारा कार्य सरणी में प्रत्येक Kth तत्व को लेकर अधिकतम योग प्राप्त करना है।
समस्या का विवरण:हमें सरणी के तत्वों का अधिकतम योग इस तरह खोजने की आवश्यकता है कि वे k इंडेक्स अलग हों। यानी। हमें योग को अधिकतम करने की आवश्यकता है,
योग =गिरफ्तारी [i] + गिरफ्तारी [i+k] + गिरफ्तारी [i + 2*k] +…. arr[i + p*k], जैसे कि (i + p*k)
समस्या को समझने के लिए एक उदाहरण लेते हैं,
समस्या का एक सरल समाधान दो नेस्टेड लूप का उपयोग करना है, बाहरी एक सरणी के प्रत्येक तत्व के लिए और आंतरिक एक का उपयोग प्रत्येक kth तत्व को i से लेने के योग को खोजने के लिए किया जाता है। यानी योग =गिरफ्तारी [i] + गिरफ्तारी [i + के] + गिरफ्तारी [i + 2*k] + … + गिरफ्तारी [i + p*k] ऐसा कि (i + p*k)
और अधिकतम राशि लौटाएं।
हमारे समाधान की कार्यप्रणाली को दर्शाने वाला कार्यक्रम,
समाधान की कार्यप्रणाली को दर्शाने वाला कार्यक्रम, इनपुट
arr[] = {5, 3, −1, 2, 4, −5, 6}, k = 4
आउटपुट
9
स्पष्टीकरण
All sums of every kth element is
5 + 4 = 9
3 − 5 = −2
−1 + 6 = 5
2
4
−5
6
The maximum is 9
समाधान दृष्टिकोण
उदाहरण
#include <iostream>
using namespace std;
int findMaxSumK(int arr[], int n, int K){
int maxSum = -1000;
for (int i = 0; i < n; i++) {
int current_Sum = 0;
for (int j = i; j < n; j += K)
current_Sum = current_Sum + arr[j];
maxSum = max(maxSum, current_Sum);
}
return maxSum;
}
int main(){
int arr[] = {5, 3, -1, 2, 4, -5, 6};
int n = sizeof(arr) / sizeof(arr[0]);
int K = 3;
cout<<"The maximum sum taking every Kth element in the array is
"<<findMaxSumK(arr, n, K);
return (0);
}
आउटपुट
The maximum sum taking every Kth element in the array is 13
उदाहरण
#include <iostream>
using namespace std;
int findMaxSumK(int arr[], int n, int K) {
int maxSum = -1000;
int suffSum[n] = {0};
for (int i = n - 1; i >= 0; i--) {
if (i + K < n)
suffSum[i] = suffSum[i + K] + arr[i];
else
suffSum[i] = arr[i];
maxSum = max(maxSum, suffSum[i]);
}
return maxSum;
}
int main(){
int arr[] = {5, 3, -1, 2, 4, -5, 6};
int n = sizeof(arr) / sizeof(arr[0]);
int K = 3;
cout<<"The maximum sum taking every Kth element in the array is
"<<findMaxSumK(arr, n, K);
return (0);
}
आउटपुट
The maximum sum taking every Kth element in the array is 13