在Python里面 最多几个点在一条直线上。写的累赘了点

a=int(input(“你想比较的数组数量:”))
l=[]
while len(l)

拿到数组了

拿到每个数组和第一个数组的斜率

def Xielv(n):#求斜率
if abs(m[0]-n[0])==0 and abs(m[1]-n[1])==0:
return 0
elif abs(m[0]-n[0])==0 and abs(m[1]-n[1])!=0:#垂直于x轴
return x
elif abs(m[0] - n[0]) != 0 and abs(m[1] - n[1]) == 0:#垂直与Y轴
return y
else:
f=abs(m[0]-n[0])/(abs(m[1]-n[1]))
return f
lkong=[]
for m in l:
l3 = map(Xielv, l)#将数组映射到斜率上面
lkong.append(list(l3))#将斜率存储起来
l6=[]
for o in lkong:
l6.append(len(o)-len(set(o)))#比如【0,1,2,2,2】 说明,4个点在一条直线上,这里留下来的就是重复的斜率个数
print(max(l6)+2)#+2的原因是 一个元素还在集合里面 ,一个是定点本身

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值