求多边形的面积_Python

题目描述:

给出一个简单多边形(没有缺口),它的边要么是垂直的,要么是水平的。要求计算多边形的面积。 多边形被放置在一个 X-Y 的卡笛尔平面上,它所有的边都平行于两条坐标轴之一。然后按逆时针方向给出各顶点的坐标值。所有的坐标值都是整数(因此多边形的面积也为整数)。

输入描述

第一行给出多边形的顶点数 n(n≤100) 。接下来的几行每行给出多边形一个顶点的坐标值 X 和 Y (都为整数并且用空格隔开)。顶点按逆时针方向逐个给出。并且多边形的每一个顶点的坐标值 -200≤x,y≤200 。多边形最后是靠从最后一个顶点到第一个顶点画一条边来封闭的。

输出描述

一个整数,表示多边形的面积。

示例

输入:
10
0 0
4 0
4 1
3 1
3 3
2 3
2 2
1 2
1 3
0 3

输出:
9

题解:

求多边形的面积_Python_第1张图片

代码:

class Solution:
    def __init__(self) -> None:
        pass
    
    def solution(self, n, vector):
        result = None
        s = 0
        for i in range(n-1):
            s = s + vector[i][0]*vector[i+1][1] - vector[i+1][0]*vector[i][1]
        s = s + vector[n-1][0]*vector[0][1] - vector[0][0]*vector[n-1][1]
        result = 1/2*abs(s)
        return int(result)

if __name__ == "__main__":

    n = int(input().strip())
    
    vector = []
    for i in range(n):
        vector.append([int(item) for item in input().strip().split()])
    
    sol = Solution()
    result = sol.solution(n, vector)

    print(result)

你可能感兴趣的:(Python,1024程序员节,python)