解题思路:拿着笔画着画着,发现每增加一个交点,就会增加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 人评分