เราได้รับอาร์เรย์ของตัวเลข เป้าหมายคือการหาคู่ขององค์ประกอบของอาร์เรย์ที่มีเงื่อนไข
ถ้า (i*arr[i]> j*arr[j]) แล้ว (arr[i],arr[j]) เป็นคู่ที่ถูกต้อง
หากอาร์เรย์เป็น [ 5,4,3,2,1 ] คู่จะเป็น [3,1] และ [2,1]
ให้เราเข้าใจด้วยตัวอย่าง
ป้อนข้อมูล − arr[] =[ 1,5,4,1,2,8,3 ]
ผลผลิต − จำนวนคู่ในอาร์เรย์ที่มี i*arr[i]> j*arr[j] คือ − 3
คำอธิบาย − คู่คู่ คือ (5,1), (4,1), (8,3)
ป้อนข้อมูล − arr[] =[ -1,-2,3,4,5,6 ]
ผลผลิต − จำนวนคู่ในอาร์เรย์ที่มี i*arr[i]> j*arr[j] คือ − 1
คำอธิบาย − คู่คือ (-1,-2)
แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้
เราจะข้ามจาก 1 ถึง N โดยใช้การวนซ้ำสองครั้ง สำหรับทุก ๆ i และ arr[i] ค้นหา j และ arr[j] เช่นนั้นเงื่อนไข i*arr[i]>j*arr[j] ( และ i!=j) นับเพิ่มขึ้นหากเงื่อนไขเป็นจริง
-
หาอาร์เรย์ของจำนวนเต็ม
-
ฟังก์ชัน condition_pair(int arr[], int size) ใช้อาร์เรย์และขนาดของอาร์เรย์และส่งกลับจำนวนคู่ที่ตรงตามเงื่อนไข
-
นับเริ่มต้นเป็น 0
-
ข้ามจาก i=1 ไปยัง i
-
เคลื่อนที่จาก j=i+1 ถึง j
-
ถ้า ( i*arr[i] )> ( j*arr[j] ) เป็นจริง จำนวนที่เพิ่มขึ้น
-
สำหรับแต่ละ i และ j คำนวณ temp=(i*j)%(i+j)
-
หลังจากสิ้นสุดการทำซ้ำทั้งสองครั้ง การนับจะมีจำนวนคู่ดังกล่าวทั้งหมด
-
ผลตอบแทนนับเป็นผลลัพธ์
ตัวอย่าง
#include <iostream> using namespace std; int condition_pair(int arr[], int size){ int count = 0; for (int i = 0; i < size - 1; i++){ for (int j = i + 1; j < size; j++){ if(i*arr[i] > j*arr[j]){ count++; } } } return count; } int main(){ int arr[] = { 2, 4, 1, 9, 6 }; int size = sizeof(arr) / sizeof(arr[0]); cout<<"Count of pairs in an array that hold i*arr[i] > j*arr[j] are: "<<condition_pair(arr, size); return 0; }
ผลลัพธ์
หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -
Count of pairs in an array that hold i*arr[i] > j*arr[j] are: 2