求多边形的面积_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

题解:

在这里插入图片描述

代码:

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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值