幫同學參加數學建模做的求點集間最短距離,時間復雜度300*300
阿新 • • 發佈:2017-09-16
參加 sel shu print adl 距離 pri stl port
要求:求每一個會員點分別到任務點集的最短距離
表格如下:
我的做法是:
1先把會員經度緯度保存為 X.txt ,把任務經度緯度保存為Y.txt(直接從表格復制)
源代碼如下:
import math class Point: def __init__(self,x=0,y=0): self.x=x self.y=y listx=[] listy=[] with open("X.txt", ‘r‘) as f: data = f.readlines() for line in data: odom = line.split() a=float(odom[0]) b=float(odom[1]) p=Point(a,b) listx.append(p) with open("Y.txt", ‘r‘) as f: data = f.readlines() for line in data: odom = line.split() a=float(odom[0]) b=float(odom[1]) p=Point(a,b) listy.append(p) class Line(Point): def getLen(self,p1,p2): r=math.sqrt(((p1.x-p2.x)**2)+(p1.y-p2.y)**2) return r l=Line() listhaha=[] b=open("shuchu.txt","a+") for i in listx: listl=[] for j in listy: juli=l.getLen(i,j) listl.append(juli) listhaha.append(min(listl)) print("點(",i.x,",",i.y,")到會員點集的最短距離為",min(listl)) b.write("點(") b.write(str(i.x)) b.write(",") b.write(str(i.y)) b.write(")到會員點集的最短距離為") b.write(str(min(listl))) b.write("\n") b.close()
幫同學參加數學建模做的求點集間最短距離,時間復雜度300*300