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