leetcode/447-240108/main.cpp
2024-05-24 22:03:54 +02:00

108 lines
3.0 KiB
C++

#include<iostream>
#include<vector>
using namespace std;
class Solution{
public:
int numberOfBoomerangs1(vector<vector <int>>& points){
int points_size = points.size();
int ans = 0;
for(vector<int> firstpoint: points){
for(vector<int> secondpoint: points){
if(samePoint(firstpoint, secondpoint))continue;
for(vector<int> thirdpoint: points){
if(samePoint(secondpoint, thirdpoint) || samePoint(firstpoint, thirdpoint)) continue;
if(distance(firstpoint, secondpoint) == distance(firstpoint, thirdpoint)){
ans++;
cout<<firstpoint[0]<<' '<<firstpoint[1]<<' '<<secondpoint[0]<<' '<<secondpoint[1]<<' '<<thirdpoint[0]<<' '<<thirdpoint[1]<<endl;
}
}
}
}
return ans;
}
int numberOfBoomerangs(vector<vector<int>>& points){
int point_size = points.size();
int ans =0;
double dist[510][510];
for(int i = 0 ; i < point_size ;i++){
for(int j = 0 ; j < point_size ;j++){
dist[i][j] = distance(points[i],points[j]);
}
}
for(int i = 0 ; i < point_size ; i++){
for(int j = 0 ; j < point_size ; j++){
cout<<dist[i][j]<<' ';
}
cout<<endl;
}
/*
for(int i = 0 ; i < point_size;i++){
for(int j = i + 1 ; j < point_size ; j++){
if(i == j) continue;
for(int k = j + 1 ; k < point_size ; k++) {
if(i == k || j == k) continue;
if(dist[i][j] == dist[i][k]){
ans += 2;
cout<<points[i][0]<<' ' <<points[i][1]<<' '<<points[j][0]<<' '<<points[j][1]<<' '<<points[k][0]<<' '<<points[k][1]<<' '<<dist[i][j]<<' '<<dist[i][k]<<endl;
}
}
}
}
*/
for(int i = 0 ; i < point_size ; i++){
sort(dist[i],dist[i]+point_size);
int tmp = 1;
for(int j = 0 ; j < point_size ; j++)
cout<<dist[i][j]<<' ';
cout<<endl;
for(int j = 1 ; j < point_size ; j++){
if(dist[i][j] == dist[i][j-1]){
tmp++;
}
else{
ans += tmp * (tmp-1);
tmp = 1;
cout<<i<<' '<<j<<' '<<tmp<<endl;
}
}
ans += tmp * (tmp - 1);
}
return ans;
}
private:
bool samePoint(vector<int> a, vector<int> b){
if(a[0] == b[0] && a[1] == b[1])
return true;
return false;
}
double distance(vector<int> a, vector<int> b){
double rlt = (a[0]-b[0])*(a[0]-b[0]) +(a[1]-b[1])*(a[1]-b[1]);
return sqrt(rlt);
}
};
int main(){
Solution sol;
vector<int> point1 = {0,0};
vector<int> point2 = {1,0};
vector<int> point3 = {-1,0};
vector<int> point4 = {0,1};
vector<int> point5 = {0,-1};
vector<vector<int>> ex1 = {point1, point2, point3,point4,point5};
cout<<sol.numberOfBoomerangs(ex1)<<endl;
// vector<int> ex2_point1 = {1,1};
// vector<int> ex2_point2 = {2,2};
// vector<int> ex2_point3 = {3,3};
// vecotr<int> ex2_point4 = {
vector<int> ex2_point1 = {0,0};
vector<int> ex2_point2 = {0,1};
vector<int> ex2_point3 = {5,0};
vector<int> ex2_point4 = {5,1};
vector<vector<int>> ex2 = {ex2_point1, ex2_point2, ex2_point3,ex2_point4};
cout<<sol.numberOfBoomerangs(ex2)<<endl;
return 0;
}