求最大的四边形面积 + 叉乘的应用
/*求四边形面积 + 叉乘的应用 http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=952题意:有n个点,求这些点能组成的最大四边形面积思路:两层循环用来枚举每一条线段,分别求线段两边最远的点,即与该线段所组成的三角形面积最大。该线段也就是四边形的对角线
*/
#include <iostream>
#include <math.h>
#include <algorithm>
#include <stdio.h>
#include <string.h>
using namespace std;
#define eps 1e-10#define maxn 310
struct point
{double x,y;
}Point[maxn];/*
double cross(point p1,point p2,point p0)///叉乘求三角形的面积
{double abx = p2.x - p1.x;double aby = p2.y - p1.y;double acx = p0.x - p1.x;double acy = p0.y - p1.y;return (abx*acy - aby*acx)*0.5;
}*/
//简约版
double cross(point p1,point p2,point p0)///叉乘求三角形的面积
{ return ((p1.x-p0.x)*(p2.y-p0.y)-(p1.y-p0.y)*(p2.x-p0.x))*0.5;
} int main()
{int n;while(~scanf("%d",&n)){for(int i=0; i<n; i++)scanf("%lf %lf",&Point[i].x,&Point[i].y);double ans=0,lmax=0,rmax;for(int i=0; i<n; i++){for(int j=i+1; j<n; j++)///这两个for是枚举对角线的两个点{rmax=0,lmax=0;for(int k=0; k<n; k++)///这是枚举对角线两侧的点{if(k!=i && k!=j){double s=cross(Point[i],Point[j],Point[k]);if(s<eps) lmax=max(lmax,-s);else rmax=max(rmax,s);}}if(lmax==0 || rmax==0) continue;///判断是否构成四边形ans=max(ans,(rmax+lmax));///比较各对角线所获的最大四边形的面积}}printf("%.6lf\n",ans);}return 0;
}
求最大的四边形面积 + 叉乘的应用相关推荐
- Gym - 102460L Largest Quadrilateral(几何-凸包+旋转卡壳求最大的四边形面积)
题目链接:点击查看 题目大意:在笛卡尔坐标系上给出 n 个点,要求选出四个点,使得组成的四边形面积最大,求出这个最大的面积,注意此处组成的四边形不是严格意义上的四边形,只需要选四个点就行 题目分析:首 ...
- poj1408 四边形面积
这道题就是一个求线段交点+四边形面积. 线段的交点要可以用公式计算,前提是要保证它们确实相交. //计算两线段交点,调用前请判线段是否相交(同时还是要判断是否平行!) point intersecti ...
- 算法之美——求两直线交点(三维叉积)——求四边形面积(二维叉积)
一般方程法: 直线的一般方程为F(x) = ax + by + c = 0.既然我们已经知道直线的两个点,假设为(x0,y0), (x1, y1),那么可以得到a = y0 – y1, b = x1 ...
- c++ 求四边形面积和周长_C语言编程题 题目:任意输入4个点,求围成四边形的面积是多少?...
C语言编程题:任意输入4个点,求围成四边形的面积是多少.代码如下: #include "stdio.h" #include "math.h" void main ...
- 任意给4条边求形成四边形面积最大值
题目:任意给4条边,求形成四边形面积最大值. 结论:形成的四边形的四个顶点都在它的外接圆上,面积S满足: 其中 这也即是圆内接四边形的面积公式. 证明过程: 首先我们把四边形的四个顶点和四条边顺次分别 ...
- bzoj1069: [SCOI2007]最大土地面积 凸包+旋转卡壳求最大四边形面积
在某块平面土地上有N个点,你可以选择其中的任意四个点,将这片土地围起来,当然,你希望这四个点围成的多边形面积最大. 题解:先求出凸包,O(n)枚举旋转卡壳,O(n)枚举另一个点,求最大四边形面积 /* ...
- c++ 求四边形面积和周长_C语言编程题 题目:任意输入4个点,求围成四边形的面积是多少?C语言编程题 题目:任意输入4...
C语言编程题 题目:任意输入4个点,求围成四边形的面积是多少? C语言编程题 题目:任意输入4 www.zhiqu.org 时间: 2020-12-07 我测试过了,四点一线,凹四边形,四边形 ...
- 【求四边形面积_Java语言编程题】
给四个点的坐标,求四边形面积(java版) java版 //任意输入4个点,求围成四边形的面积是多少? //四点一线.凹四边形.四边形,有两个点共点,都可以套用. public long getAre ...
- 求三角形 四边形面积(python)
注:对于四边形,需要先按顺时针或者逆时针排序,可以对凸四边形或者凹四边形进行计算. #!/usr/bin/env python # -*- coding: utf-8 -*- "" ...
最新文章
- u盘安装ubuntu10.04 、11.04 server
- 【Netty】TCP粘包和拆包
- Docker container与宿主进程相互隔离的实现原理
- 年终福利 | “社区之星”(社区核心贡献者)成长故事征集
- vue 全家桶 - 前端工程化
- DataSnap服务器从xe2升级到xe5报错的处理
- 【渝粤教育】国家开放大学2018年秋季 0053-21T移动通信技术与移动通信设备 参考试题
- iOS底层探索之dyld(上):动态链接器流程分析
- C++函数和函数的调用
- 信息系统运行维护服务方案(IT运维服务方案)
- LwIP协议栈源码详解—TCP定时器
- 伪C++开发连连看(补充)
- 电脑硬盘分区不见了怎么恢复数据?
- 嵌入式软件是怎么分类的?
- 十年•杭研大咖说 | 邱似峰:从应届生到网易视频云CTO的蜕变
- 从混沌到有序的远程办公进阶之路
- vue2关于引入字体的步骤
- python用途谷歌浏览器-python调用chrome ie等浏览器
- 如何用 JS 实现 3D 赛车效果
- C语言递归实现汉诺塔