Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

นับคู่ในอาเรย์ที่เป็นไปตาม i*arr[i] > j*arr[j] ใน C++


เราได้รับอาเรย์ของตัวเลข เป้าหมายคือหาคู่ของสมาชิกอาเรย์ที่เป็นไปตามเงื่อนไข

ถ้า (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