Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ผลรวมเซิร์บอาร์เรย์สูงสุดในอาร์เรย์ที่สร้างจากการต่อซ้ำใน C++

ปัญหา

ในบทช่วยสอนนี้ เราจะพูดถึงโปรแกรมเพื่อหาผลรวมเซิร์บอาร์เรย์สูงสุดในอาร์เรย์ที่สร้างจากการต่อซ้ำ

สำหรับนี้ เราจะได้รับอาร์เรย์และจำนวนเต็ม K งานของเราคือหาเซิร์บอาร์เรย์ที่มีสมาชิกสูงสุดเมื่ออาร์เรย์ที่กำหนดถูกทำซ้ำ K ครั้ง

ตัวอย่างโค้ด

#include<bits/stdc++.h> 
using namespace std; 

//returning sum of maximum subarray 
int maxSubArraySumRepeated(int a[], int n, int k) { 
    int max_so_far = INT_MIN, max_ending_here = 0; 
    for (int i = 0; i < n*k; i++) { 
        max_ending_here = max_ending_here + a[i%n]; 
        if (max_so_far < max_ending_here) 
            max_so_far = max_ending_here; 
        if (max_ending_here < 0) max_ending_here = 0; 
    } 
    return max_so_far; 
} 

int main() { 
    int a[] = {10, 20, -30, -1}; 
    int n = sizeof(a)/sizeof(a[0]); 
    int k = 3; 
    cout << "Maximum contiguous sum is " << maxSubArraySumRepeated(a, n, k); 
    return 0; 
}

เอาต์พุต

Maximum contiguous sum is 30