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

ค่าสูงสุดของ subarray sum modulo m ใน C++


ในปัญหานี้ เราจะได้รับอาร์เรย์ขนาด n และจำนวนเต็ม m งานของเราคือสร้างโปรแกรมที่จะหาค่าสูงสุดของ subarray sum modulo m ใน C++

คำอธิบายโปรแกรม − ที่นี่ เราจะหาค่าสูงสุดที่ได้จากการหารผลรวมขององค์ประกอบทั้งหมดของ subarray หารด้วย m

มาดูตัวอย่างเพื่อทำความเข้าใจปัญหากัน

ป้อนข้อมูล − อาร์เรย์ ={4, 9 ,2} ม. =6

ผลผลิต − 5

คำอธิบาย − อาร์เรย์ย่อยทั้งหมดและเศษที่เหลือในการหาร

<ก่อน>{4}:4%6 =4{9}:9%6 =3{2}:2%6 =2{4, 9}:13%6 =1{9, 2}:11%6 =5{4, 9, 2}:15%6 =3

เพื่อแก้ปัญหานี้ เราคำนวณคำนำหน้าSumModulo Array และการคำนวณ maxSum ของแต่ละดัชนีโดยใช้สูตร maxSum at i =(prefixi + prefixj + m)%m

ตัวอย่าง

โปรแกรมเพื่อแสดงโซลูชันของเรา

#includeใช้เนมสเปซ std;int calcMaxSum(int arr[], int n, int m) { int x คำนำหน้า =0, maxSumMod =0; ตั้งค่า ผลรวม; sums.insert(0); สำหรับ (int i =0; i  

ผลลัพธ์

ผลรวม subarray สูงสุด modulo 5 คือ 4