ในปัญหานี้ เราจะได้รับอาร์เรย์ขนาด 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