查找两个分段函数的交点

时间:2018-12-05 10:33:34

标签: python-2.7 kattis

解决此problem。我正在尝试(在Python2中)获取两个分段函数的交集,它们以数组的形式给出:a=[[x1,y1],[x2,y2],...],与b相似。分段函数是通过将二维图上的点连接起来的直线定义的。我想找到的是它们的交点的x坐标。因此,我所拥有的如下。首先,我选择up(数组a)的前两个点,并计算连接它们的直线的斜率和y截距。然后,我遍历down(数组b),并检查相交点以及它是否位于该点的范围内。如果是这样,它将打印出来。

found = False
for i in range(1, len(up)):
    a = float((up[i][1]-up[i-1][1]))/(up[i][0]-up[i-1][0])
    b = up[i][1]-a*up[i][0]
    for j in range(1, len(down)):
        c = float((down[j][1]-down[j-1][1]))/(down[j][0]-down[j-1][0])
        d = down[j][1]-c*down[j][0]
        x =(d-b)/(a-c)
        if up[i-1][0]<=x<=up[i][0] and down[j-1][0]<=x<=down[j][0]:
            print x
            found = True
            break
if found: break

这似乎适用于他们给出的每个测试用例以及我能想到的每个测试用例。但是,在5号测试用例(将其保密)下,它将遇到运行时错误。可能是造成此错误的原因/是否有更好的方法来检查相交点?

0 个答案:

没有答案