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 โดยใช้การวนซ้ำสองครั้ง สำหรับทุก ๆ 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