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

การนับสี่เหลี่ยมด้านขนานในระนาบใน C++


เราได้รับระนาบที่มีจุดที่เป็นรูปสี่เหลี่ยมด้านขนานและภารกิจคือการคำนวณการนับของสี่เหลี่ยมด้านขนานที่สามารถเกิดขึ้นได้โดยใช้จุดที่กำหนด ในรูปสี่เหลี่ยมด้านขนานด้านตรงข้ามของรูปสี่เหลี่ยมจะขนานกัน ดังนั้นมุมตรงข้ามจะเท่ากัน

ป้อนข้อมูล

int a[] = {0, 2, 5, 5, 2, 5, 2, 5, 2}
Int b[] = {0, 0, 1, 4, 3, 8, 7, 11, 10}

การนับสี่เหลี่ยมด้านขนานในระนาบใน C++

ผลผลิต − นับสี่เหลี่ยมด้านขนานในระนาบ − 3

คำอธิบาย − เราได้รับคะแนน (x, y) และใช้จุดเหล่านี้ เราสามารถสร้างรูปสี่เหลี่ยมด้านขนานได้ 3 อันดังแสดงในรูป

ป้อนข้อมูล

a[] = {0, 3, 1, 4, 1, 5}
b[] = {0, 1, 3, 4, 4, 4}

ผลผลิต − นับสี่เหลี่ยมด้านขนานในระนาบ − 1

คำอธิบาย − เราได้จุด (x, y) และใช้จุดเหล่านี้ เราสามารถสร้างการนับ 1 สี่เหลี่ยมด้านขนานดังแสดงในรูป

แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้

  • ป้อน array_1 สำหรับค่าพิกัด x และ array_2 สำหรับค่าพิกัด y

  • คำนวณขนาดของ array_1 แล้วส่งข้อมูลไปยังฟังก์ชันเพื่อการประมวลผลต่อไป

  • สร้างตัวแปรของแผนผังประเภทที่จะสร้างคู่และเก็บข้อมูลประเภทจำนวนเต็ม

  • สร้างการนับตัวแปรชั่วคราวเพื่อเก็บผลรวมของสี่เหลี่ยมด้านขนานที่สามารถสร้างได้

  • เริ่มการวนซ้ำ FOR i จาก 0 จนถึงขนาดของอาร์เรย์_1

  • เริ่มการวนซ้ำ FOR j จาก i+1 จนถึงขนาดของอาร์เรย์_1

  • ภายในลูป ตั้งค่า a_mid ด้วย a[i] + a[j] และตั้งค่า b_mid ด้วย b[i] + b[j]

  • และเพิ่มค่ากลางของ array_1 และ array_2 ขึ้น 1

  • เริ่มวงอื่นที่จะข้ามแผนที่ตั้งแต่ต้นจนจบ

  • ภายในลูปให้ตั้งค่าตัวแปรชั่วคราวด้วยค่า y ของคู่

  • และตั้งค่าการนับด้วย temp * (temp -1 ) / 2

  • จำนวนคืน

  • พิมพ์ผลลัพธ์

ตัวอย่าง

#include <bits/stdc++.h>
using namespace std;
//Count of parallelograms in a plane
int parallelogram(int a[], int b[], int size){
   map<pair<int, int>, int> um;
   int count = 0;
   for (int i=0; i<size; i++){
      for (int j=i+1; j<size; j++){
         int a_mid = a[i] + a[j];
         int b_mid = b[i] + b[j];
         um[make_pair(a_mid, b_mid)]++;
      }
   }
   for (auto it = um.begin(); it != um.end(); it++){
      int temp = it->second;
      count+= temp*(temp - 1)/2;
   }
   return count;
}
int main(){
   int a[] = {0, 3, 1, 4, 1, 5};
   int b[] = {0, 1, 3, 4, 4, 4};
   int size = sizeof(a) / sizeof(int);
   cout<<"Count of parallelograms in a plane: "<<parallelogram(a, b, size) << endl;
   return 0;
}

ผลลัพธ์

หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -

Count of parallelograms in a plane: 1