เราได้รับสี่อาร์เรย์ A[], B[], C[] และ D[] เป้าหมายคือการค้นหาองค์ประกอบสี่เท่าทั้งหมดของอาร์เรย์เหล่านี้ โดยที่ A[i]+B[j]+C[k]+D[l] =x อาร์เรย์ทั้งสี่มีจำนวนองค์ประกอบเท่ากัน N.
เราจะทำสิ่งนี้โดยสำรวจแต่ละอาร์เรย์หนึ่งครั้งและเปรียบเทียบว่า A[i]+B[j]+C[j]+D[l]==x ถ้านับเพิ่มจริง
มาทำความเข้าใจกับตัวอย่างกัน
ป้อนข้อมูล
<ก่อน>A[]={ 1,2,3}; ข[]={ 2,3,2}; ค[]={ 4,3,1}; ด[]={ 3,1,1 }; X=12ผลผลิต
จำนวนสี่เท่า:4
คำอธิบาย
Quadruples เช่น ( A[i] B[j] C[k] D[l] ) คือ:(2 3 4 3) , (3 2 4 3), (3 3 3 3), (3 2 4 3)จำนวนสี่เท่า :4
ป้อนข้อมูล
<ก่อน>A[]={ 1,1,1}; ข[]={ 2,2,2}; ค[]={ 3,3,3}; ด[]={ 4,4,4 }; X=15ผลผลิต
จำนวนสี่เท่า:0
คำอธิบาย
ไม่สามารถจับคู่องค์ประกอบดังกล่าวได้
แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้
-
เราใช้อาร์เรย์จำนวนเต็ม A[],B[], C[] และ D[] ที่มีความยาวเท่ากันซึ่งเริ่มต้นด้วยตัวเลขสุ่ม
-
ใช้ตัวแปร N เพื่อเก็บความยาว
-
ฟังก์ชัน countQuad(int a[],int b[],int c[],d[],int x, int n) รับอาร์เรย์ทั้งหมดเป็นอินพุตที่มีความยาวเท่ากัน n และส่งคืนการนับ
-
สำรวจโดยใช้สี่ลูปสำหรับแต่ละอาร์เรย์
-
วงนอกสุด 0<=i
-
เปรียบเทียบว่า a[i]+b[j]+c[k]+d[l]==x. ถ้านับเพิ่มจริง
-
เมื่อสิ้นสุดการวนซ้ำทั้งหมด การนับจะมีสี่เท่าด้วยผลรวม x
-
ผลตอบแทนนับเป็นผลลัพธ์
ตัวอย่าง
#includeใช้เนมสเปซ std;int countQuads(int a[],int b[],int c[],int d[],int x, int n){ จำนวน int =0; สำหรับ (int i =0; i ผลลัพธ์
หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -
จำนวนสี่เท่า :0