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

โปรแกรม C ++ สำหรับการสืบค้นผลรวมของช่วงโดยไม่มีการอัพเดท?


เราจำเป็นต้องคำนวณผลรวมขององค์ประกอบจากดัชนี i ถึงดัชนี j แบบสอบถามที่ประกอบด้วยค่าดัชนี i และ j จะถูกดำเนินการหลายครั้ง

Input:arr[] ={5, 6, 3, 4, 1 } i =1, j =3Output: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}sum[j]-sum[i-1]=sum[3]-sum[1-1]=sum[3]-sum[0]=18-5=13

ตรรกะนั้นพื้นฐานมากในการเริ่มต้นลูปฟอร์ม i ดัชนีจนถึงดัชนี j และสรุปองค์ประกอบระหว่างดัชนีเหล่านั้น แต่เราไม่สามารถเก็บไว้ในตัวแปรพิเศษได้ ดังนั้นเราจะใช้อาร์เรย์อื่นที่เราเพิ่มองค์ประกอบอาร์เรย์ด้วยองค์ประกอบอาร์เรย์สุดท้ายเป็นต้น จากนั้นในดัชนี j เราจะลบค่าดัชนี i-1;

ตัวอย่าง

#include ใช้เนมสเปซ std;int rangeSum(int i, int j, int sum[]) { if (i ==0) return sum[j]; ผลตอบแทนรวม[j] - ผลรวม[i - 1];}int main() { int arr[] ={ 5, 6, 3, 4, 1 }; int n=5; จำนวนเต็ม[5]; sum[0] =arr[0]; สำหรับ (int i =1; i  

ผลลัพธ์

13