Tổng tích lũy của mảng con
Bài học 25 trên 26 trong khóa học Mảng trong C++ của Coddy.
Mảng tổng tích lũy là mảng chứa tổng các phần tử của một mảng tính đến từng chỉ số.
Ví dụ,
Arr={1,2,3,4}
với i=0, tổng tích lũy sẽ là 1
với i=1, tổng tích lũy sẽ là 1+2=3
với i=2, tổng tích lũy sẽ là 1+2+3=6
với i=3, tổng tích lũy sẽ là 1+2+3+4=10
Vậy mảng tổng tích lũy sẽ là {1,3,6,10}
Một cách tính là dùng hai vòng lặp lồng nhau để tính tổng và lưu vào một mảng. Cụ thể:
int k=0;
while(k<n){
int sum=0;
for(int j=0;j<k+1;j++){
sum=sum+arr[j];
}
ans[k]=sum;
k++;
}Cách còn lại và hiệu quả nhất để tính mảng tổng tích lũy là cộng phần tử hiện tại với tổng trước đó.
Arr={1,2,3,4}
cumArr[] là mảng tổng tích lũy.
- cumArr[0]=1
- cumArr[1]=prev sum+Arr[1] = 1 + 2 = 3
- cumArr[2]=prev sum+Arr[2] = 3 + 3 = 6
- cumArr[3]=prev sum+Arr[1] = 6 + 4= 10
Có thể thực hiện như sau:
int sum=0;
for(int i=0;i<n;i++){
sum=sum+arr[i];
ans[i]=sum;
}Câu đố
Bạn nghĩ độ phức tạp thời gian của cả hai cách tiếp cận này là bao nhiêu?
Tự làm thử
Bài học này không có thử thách code.
Tất cả bài học trong Mảng trong C++
2Phân tích bộ nhớ
Cấp phát bộ nhớ8Mảng con
Giới thiệuDãy conIn ra tất cả mảng conMảng con có tổng cho trướcTổng tích lũy của mảng conThuật toán KadaneTự luyện tập: Trình biên dịch C++ online