0
点赞
收藏
分享

微信扫一扫

三角形(春季每日一题 7)

小黑Neo 06-27 09:21 阅读 4

Farmer John 想要给他的奶牛们建造一个三角形牧场。

三角形(春季每日一题 7)_#include 个栅栏柱子分别位于农场的二维平面上不同的点 三角形(春季每日一题 7)_i++_02

他可以选择其中三个点组成三角形牧场,只要三角形有一条边与 三角形(春季每日一题 7)_枚举_03 轴平行,且有另一条边与 三角形(春季每日一题 7)_ios_04 轴平行。

Farmer John 可以围成的牧场的最大面积是多少?

保证存在至少一个合法的三角形牧场。

输入格式
输入的第一行包含整数 三角形(春季每日一题 7)_#include

以下 三角形(春季每日一题 7)_#include 行每行包含两个整数 三角形(春季每日一题 7)_ios_07三角形(春季每日一题 7)_枚举_08,均在范围 三角形(春季每日一题 7)_i++_09 之内,描述一个栅栏柱子的位置。

输出格式
由于面积不一定为整数,输出栅栏柱子可以围成的合法三角形的最大面积的两倍。

数据范围
三角形(春季每日一题 7)_ios_10
输入样例:
4
0 0
0 1
1 0
1 2
输出样例:
2

样例解释
位于点 三角形(春季每日一题 7)_#include_11三角形(春季每日一题 7)_枚举_12 的木桩组成了一个面积为 三角形(春季每日一题 7)_ios_13 的三角形。所以,答案为 三角形(春季每日一题 7)_#include_14

只有一个其他的三角形,面积为 三角形(春季每日一题 7)_i++_15

解法一

#include<iostream>

using namespace std;

const int N = 110;

int n;
int a[N], b[N];

bool check(int i, int j, int k, int &area){

int x1 = a[i], y1 = b[i];
int x2 = a[j], y2 = b[j];
int x3 = a[k], y3 = b[k];

if((x1==x2 || x2==x3 || x1==x3) && (y1==y2 || y2==y3 || y1==y3)){
int x, y;
if(x1 == x2) y = abs(y1 - y2);
if(x2 == x3) y = abs(y2 - y3);
if(x1 == x3) y = abs(y1 - y3);
if(y1 == y2) x = abs(x1 - x2);
if(y2 == y3) x = abs(x2 - x3);
if(y1 == y3) x = abs(x1 - x3);

area = x * y;

return true;
}

return false;
}

int main(){

cin >> n;
for(int i = 0; i < n; i++) cin >> a[i] >> b[i];

int res = 0;
for(int i = 2; i < n; i++)
for(int j = 0; j < i; j++)
for(int k = 0; k < j; k++){
int area;
if(check(i, j, k, area)){
res = max(res, area);
}
}

cout << res << endl;

return 0;
}

解法二

#include<iostream>

using namespace std;

const int N = 110;

int n;
int a[N], b[N];

int main(){

cin >> n;
for(int i = 0; i < n; i++) cin >> a[i] >> b[i];

int res = 0;
for(int i = 0; i < n; i++)
for(int j = 0; j < n; j++)
for(int k = 0; k < n; k++)
if(i != j && i != k && j != k)
if(a[i] == a[j] && b[j] == b[k])
res = max(res, abs(b[i]-b[j])*abs(a[j]-a[k]));

cout << res << endl;

return 0;
}


举报

相关推荐

0 条评论