เราได้รับอาร์เรย์ของจำนวนเต็ม เป้าหมายคือการหาจำนวนคู่สูงสุดในอาร์เรย์ซึ่งเมื่อเพิ่มแล้วจะได้ผลรวมเท่ากัน เราต้องหาจำนวนสูงสุดของคู่ดังกล่าว
อินพุต
Arr[]={ 1,2,3,4,2 }
ผลลัพธ์
จำนวนคู่สูงสุดที่มีผลรวมเท่ากัน :3
คำอธิบาย − ผลรวมของคู่ตัวเลข −
<ก่อน>{1,2}, {1,2} ผลรวม:3{1,3},{2,2} ผลรวม:4{1,4},{2,3},{3,2} ผลรวม:5{2,4} ผลรวม:6{3,4} ผลรวม:7จำนวนคู่สูงสุดที่มีผลรวมเท่ากันคือ 3 (สำหรับผลรวม =5 )อินพุต
Arr[]={ 5,3,6,1 }
ผลลัพธ์
จำนวนคู่สูงสุดที่มีผลรวมเท่ากัน :1
คำอธิบาย − ผลรวมของคู่ตัวเลข −
{5,3} ผลรวม:8{5,6} ผลรวม:11{5,1} ผลรวม:6{3,6} ผลรวม:9{3,1} ผลรวม:4{6,1} ผลรวม:7จำนวนคู่สูงสุดที่มีผลรวมเท่ากันคือ 1
แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้
-
อาร์เรย์จำนวนเต็ม Arr[] ใช้เพื่อเก็บจำนวนเต็ม
-
จำนวนเต็ม 'ขนาด' เก็บความยาวของอาร์เรย์
-
ฟังก์ชัน countEqualSum( int arr[], int n) รับอาร์เรย์ ขนาดเป็นอินพุตและส่งกลับจำนวนสูงสุดของคู่ที่สร้างผลรวมเดียวกัน
-
ก่อนอื่น เราจะนำอาร์เรย์ 'ผลรวม' เพื่อเก็บความถี่ของผลรวมที่ไม่ซ้ำ
-
ในแต่ละดัชนีของผลรวม ให้นับการเพิ่มขององค์ประกอบนั้น
-
แต่ละดัชนีของผลรวมอาร์เรย์คือผลรวมของคู่ขององค์ประกอบ
-
ค้นหาจำนวนดังกล่าวสูงสุดโดยค้นหาองค์ประกอบสูงสุดภายในผลรวมอาร์เรย์และเก็บไว้ใน maxC
-
คืนค่า maxC เป็นผลลัพธ์
ตัวอย่าง
#includeใช้เนมสเปซ std;// ฟังก์ชันเพื่อคืนค่าสูงสุด// จำนวนคู่ที่มีค่า sumint countEqualSum(int arr[], int n){ int sum[20]={0 }; int maxC =0; // เก็บจำนวนรวมของคู่ทั้งหมดสำหรับ (int i =0; i maxC) maxC=sum[i]; คืนค่า maxC;}int main(){ int Arr[] ={ 1,2,3,4,2 }; ขนาด int =5; cout <<”จำนวนคู่สูงสุดที่สร้างผลรวมเท่ากัน” < ผลลัพธ์
จำนวนคู่สูงสุดที่สร้างผลรวมเท่ากัน :3