Rumah > Artikel > pembangunan bahagian belakang > Terjemah yang berikut menggunakan C++: Pertanyaan jumlah selang tanpa kemas kini
Dalam artikel ini, kita akan diberikan tatasusunan saiz n, iaitu integer. Kami kemudiannya akan mengira jumlah elemen dari indeks L hingga indeks R dan melakukan berbilang pertanyaan, atau kami perlu mengira jumlah julat yang diberikan [L, R]. Contohnya -
Input : arr[] = {1, 2, 3, 4, 5} L = 1, R = 3 L = 2, R = 4 Output : 9 12 Input : arr[] = {1, 2, 3, 4, 5} L = 0, R = 4 L = 1, R = 2 Output : 15 5
Terdapat dua penyelesaian untuk masalah ini. Yang pertama adalah melalui kaedah brute force dan kaedah jumlah awalan (cekap).
Dalam kaedah ini, kami akan mengulangi julat yang diberikan dan mencetak jumlahnya.
#include<bits/stdc++.h> using namespace std; int main() { int arr[] = {1, 2, 3, 4, 5}; int n = sizeof(arr)/sizeof(int); // size of given array. int L1 = 1, R1 = 3; int L2 = 2, R2 = 4; int sum = 0; for(int i = L1; i <= R1; i++) // traversing through the first range. sum += arr[i]; cout << sum << "\n"; sum = 0; for(int i = L2; i <= R2; i++) // traversing through the second range. sum += arr[i]; cout << sum << "\n"; }
9 12
#include<bits/stdc++.h> using namespace std; int main() { int arr[] = {1, 2, 3, 4, 5}; int n = sizeof(arr)/sizeof(int); // size of given array. int L1 = 1, R1 = 3; int L2 = 2, R2 = 4; int sum = 0; int prefix[n]; for(int i = 0; i < n; i++){ sum += arr[i]; prefix[i] = sum; } if(L1) // to avoid segmentation fault cout << prefix[R1] - prefix[L1 - 1] << "\n"; else cout << prefix[R1] << "\n"; if(L2) // avoiding segmentation fault. cout << prefix[R2] - prefix[L2 - 1] << "\n"; else cout << prefix[R2] << "\n"; }
9 12
Kesimpulan
Atas ialah kandungan terperinci Terjemah yang berikut menggunakan C++: Pertanyaan jumlah selang tanpa kemas kini. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!