clearlove5


私信TA

用户名:2906883228

访问量:603

签 名:

等  级
排  名 14562
经  验 857
参赛次数 0
文章发表 2
年  龄 0
在职情况 学生
学  校 上兰村皇家理工学院
专  业

  自我简介:

TA的其他文章

解题思路:拿着笔画着画着,发现每增加一个交点,就会增加n+1个平面 。因此我们可以遍历所以直线 ,将已经遍历过的直线储存在lines列表中,然后求当前直线                    与 lines中已遍历直线的交点,最后用set集合实现对交点的去重。

注意事项:set()是不可以直接对二维列表进行去重。例子:

                   set([[1,2],[1,2]])会报错

                    转化为set([(1,2),(1,2)])是正确的,即将列表的中的元素转化为tuple形式。

参考代码:


n = int(input())

lines = []

ans = 1

for i in range(n):

    point = []

    a,b = map(int,input().split())

    if (a,b) in lines:

        continue

    for k,h in lines:

        if a!=k:     

            x = (h-b)/(a-k)        #求交点

            y = (a*h-k*b)/(a-k)

            point.append((x,y))

    lines.append((a,b))

    s = len(set(point))  #将列表转化为tuple,可以实现对多维数组去重

    ans += (s+1)


print(ans)


 

0.0分

1 人评分

  评论区

  • «
  • »