dynamic.py,基於動態規劃求最優路徑
import matplotlib.pyplot as plt
import pylab as pl
import connmysql
import pandas as pd
sql2 = "select id, distance,duration from trafic"
checklist = connmysql.getdata(sql2)
ids=
for i in range(0,len(checklist)):
time_dataframe = pd.dataframe(columns=['distance','duration'], index=ids)
# print(time_dataframe)
for i in range(0,len(checklist)):
id=checklist[i][0]
time_dataframe.at[ids[i],'distance'] = float(checklist[i][1])#distance
time_dataframe.at[ids[i], 'duration'] = float(checklist[i][2] ) # distance
# id='100001-100002'
# print(time_dataframe.at[id,'distance'])
# print(time_dataframe.at['100001-100002','duration'])
# list=['100002','100003','100004','100005','100006']
#基於動態規劃求得最短路徑,計算量會比較小,速度較快
list = ['100002', '100003', '100004', '100005', '100006']
# 基於動態規劃求得最短路徑,計算量會比較小,速度較快
routelist=
route_distance=
for j in range(0,len(list)-1):
print('mm',j)
print('he1', routelist)
print('he2', route_distance)
ids =
distances, routes = {}, {}
for i in range(0, len(list)):
if len(routelist)==0:#當裡面還沒有目標在時
id = list[0] + '-'+list[i]
if list[i]!=list[0]:
else:
if list[i] not in routelist :#計算過的點不再重複計算
id = routelist[j]+ '-'+list[i]
print('he3',ids)
for k in range(0, len(ids)):
distances[ids[k]] = time_dataframe.at[ids[k], 'distance']
print('he4',distances)
route1 = sorted(distances.items(), key=lambda item: item[1]) # 將最小距離取出來
# routes[route1[0][0]] = route1[0][1] # key:100002-100006,values: 3929.0,,儲存離最後乙個點的最優路線
print('he5',route1)
a=route1[0][0].split('-')
if a[0] not in routelist:
if a[1] not in routelist:
print('he6', routelist)
print('he',routelist)
利用動態規劃的思想求最優解
源自 劍指offer 中的剪繩子問題,書中使用的是c 但是我更喜歡用python實現。這裡按照從上而下的順序計算,也就是說我們先得到f 2 f 3 再得到f 4 f 5 直到得到f n for i in range 4,length 1 max length 0 temp i 2 1 for j i...
動態規劃 最優編輯
int findmincost string a,int n,string b,int m,int c0,int c1,int c2 初始化矩陣 dp 0 0 0 for int i 1 i m 1 i for int j 1 j n 1 j for int i 1 i n 1 i return d...
動態規劃 最優編輯
題目 對於兩個字串a和b,我們需要進行插入 刪除和修改操作將a串變為b串,定義c0,c1,c2分別為三種操作的代價,請設計乙個高效演算法,求出將a串變為b串所需要的最少代價。給定兩個字串a和b,及它們的長度和三種操作代價,請返回將a串變為b串所需要的最小代價。保證兩串長度均小於等於300,且三種代價...