Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

업데이트 없이 범위 합계 쿼리를 위한 C++ 프로그램?

<시간/>

인덱스 i에서 인덱스 j까지 요소의 합을 계산해야 합니다. i 및 j 인덱스 값으로 구성된 쿼리는 여러 번 실행됩니다.

입력:arr[] ={5, 6, 3, 4, 1 } i =1, j =3출력:13

설명


6 + 3 + 4 =13합[] ={5, 6+5, 3+6+5, 4+3+6+5, 1+4+3+6+5 }합[]={5 ,11,14,18,19}합[j]-합[i-1]=합[3]-합[1-1]=합[3]-합[0]=18-5=13 

논리는 j 인덱스까지 루프 형태 i 인덱스를 시작하고 해당 인덱스 사이의 요소를 합산하는 매우 기본적입니다. 그러나 우리는 그것들을 추가 변수에 저장할 수 없으므로 마지막 배열 요소와 함께 배열 요소를 추가하는 다른 배열을 사용합니다. 그런 다음 j 인덱스에서 i-1 인덱스 값을 뺍니다.

예시

#include  네임스페이스 사용 std;int rangeSum(int i, int j, int sum[]) { if (i ==0) return sum[j]; return sum[j] - sum[i - 1];}int main() { int arr[] ={ 5, 6, 3, 4, 1 }; 정수 n=5; 정수 합계[5]; 합계[0] =arr[0]; for (int i =1; i  

출력

13