C++中平面平行四邊形的數量


給定一個包含構成平行四邊形的點的平面,任務是計算使用給定點可以形成的平行四邊形的數量。在平行四邊形中,四邊形的對邊平行,因此對角相等。

輸入 -

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

輸出 - 平面上平行四邊形的數量 - 3

解釋 - 給定 (x, y) 點,並使用這些點,我們可以形成 3 個平行四邊形,如圖所示。

輸入 -

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

輸出 - 平面上平行四邊形的數量 - 1

解釋 - 給定 (x, y) 點,並使用這些點,我們可以形成 1 個平行四邊形,如圖所示。

下面程式中使用的方案如下

  • 輸入陣列_1 用於 x 座標值,陣列_2 用於 y 座標值

  • 計算陣列_1 的大小並將資料傳遞給函式以進行進一步處理

  • 建立一個 map 型別的變數,它將形成對並存儲整數型別資料

  • 建立一個臨時變數 count 來儲存可以形成的平行四邊形的總數

  • 從 0 開始迴圈 FOR i 直到陣列_1 的大小

  • 從 i+1 開始另一個迴圈 FOR j 直到陣列_1 的大小

  • 在迴圈內,用 a[i] + a[j] 設定 a_mid,用 b[i] + b[j] 設定 b_mid

  • 並將陣列_1 和陣列_2 的中間值加 1

  • 開始另一個迴圈,該迴圈將從頭到尾遍歷對映

  • 在迴圈內,用對的 y 值設定一個臨時變數

  • 並用 temp * (temp -1 ) / 2 設定 count

  • 返回 count

  • 列印結果。

示例

 線上演示

#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

更新於: 2020-08-31

97 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.