题面
问题描述
输入四个点的坐标,每个点的坐标由它的横坐标和纵坐标组成,然后计算这四个点所构成矩形的面积。给定数据保证矩阵的边长均为整数。
输入格式
输入的第一行包含两个整数x1,y1,表示点A的横坐标和纵坐标。
输入的第二行包含两个整数x2,y2,表示点B的横坐标和纵坐标。
输入的第三行包含两个整数x3,y3,表示点C的横坐标和纵坐标。
输入的第四行包含两个整数x4,y4,表示点D的横坐标和纵坐标。
(输入整数之间用一个空格分隔)
输出格式
输出一个整数,表示这四个点构成的矩形的面积。
样例输入
0 1
2 1
0 0
2 0
样例输出
2
样例说明
点A的坐标为(0,1), 点B的坐标为(2,1), 点C的坐标为(0,0), 点D的坐标为(2,0)。矩形一个边的边长为2,一个边的边长为1,所以面积为1*2=2。
评测用例规模与约定
-10 ≤ xi ≤ 10,-10 ≤ yi ≤ 10。
题解
这题用不到结构体
观察可知:
矩形中线段一共有三种长度,
这三种长度可以由一点与其它三点的距离得出。
所以这题的解题思路就是:
记录这三种长度,排序,选择小的两个长度,将他们乘起来并输出
#include <iostream>
#include <cmath>
#include <algorithm>
using namespace std;
int main()
{
int tmp1x, tmp1y, tmp2x, tmp2y, len[4];
cin >> tmp1x >> tmp1y;
for (int i = 1; i <= 3; i++)
{
cin >> tmp2x >> tmp2y;
len[i] = sqrt((tmp1x - tmp2x) * (tmp1x - tmp2x) + (tmp1y - tmp2y) * (tmp1y - tmp2y));
}
sort(len + 1, len + 3 + 1);
cout << len[1] * len[2];
return 0;
}
date:20231230