给定四边形a, b, c, d的四条边,根据给定的边数求四边形的最大面积。
例子:
输入:1 2 1 2
输出:2.00
构造一个矩形以获得最大面积是最佳的。
根据Bretschneider 公式,一般四边形的面积为,K=
这里,a、b、c、d 是四边形的边长,s 是四边形的半周长,角是两个对角。
因此,只有当对角和等于 π(180) 时,该公式才最大化。然后,我们可以使用 Bretschneider 公式的简化形式来计算(最大)面积 K。
这个公式被称为Brahmagupta 公式。
下面是给定方法的实现:
<?php
// PHP program to find maximum area of a
// quadrilateral
function maxArea( $a, $b, $c, $d)
{
// Calculating the semi-perimeter
// of the given quadrilateral
$semiperimeter = ($a + $b + $c + $d) / 2;
// Applying Brahmagupta's formula to
// get maximum area of quadrilateral
return sqrt(($semiperimeter - $a) *
($semiperimeter - $b) *
($semiperimeter - $c) *
($semiperimeter - $d));
}
// Driver code
$a = 1; $b = 2; $c= 1; $d = 2;
echo(maxArea($a, $b, $c, $d));
// This code is contributed by vt_m.
?>
输出:
2.00
时间复杂度: O(logn)
辅助空间: O(1)
如果有人有在空间和时间方面更高效的更好解决方案,请提出建议。
如果您喜欢此文章,请收藏、点赞、评论,谢谢,祝您快乐每一天。