เราได้รับอาเรย์ของตัวเลข เป้าหมายคือหาคู่ของสมาชิกอาเรย์ที่เป็นไปตามเงื่อนไข
ถ้า (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 ด้วยลูป FOR สองครั้ง สำหรับทุก i และ arr[i] ค้นหา j และ arr[j] ที่เงื่อนไข i*arr[i] > j*arr[j] (และ i!=j) เพิ่ม count ถ้าเงื่อนไขเป็นจริง
- รับอาเรย์จำนวนเต็ม
- ฟังก์ชัน
condition_pair(int arr[], int size)รับอาเรย์และขนาด คืนจำนวนคู่ที่เงื่อนไขเป็นจริง - กำหนด
countเริ่มต้น 0 - เดินทางจาก
i=1ถึงi <size-1 - เดินทางจาก
j=i+1ถึงj<size - ถ้า
(i*arr[i]) > (j*arr[j])เป็นจริง เพิ่มcount - สำหรับแต่ละ
iและjคำนวณtemp= (i*j)%(i+j) - ท้ายสุดของการวนซ้ำทั้งสอง
countจะมีจำนวนคู่ดังกล่าวทั้งหมด - คืน
count
ตัวอย่างโค้ด C++
#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