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
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP