池塘裏有n片荷葉,圍成了一個凸多邊形。荷葉的編號分別爲1,2,3,。。n,n<=1000, 求一種青蛙的跳躍策略,使得青蛙跳過的距離最短,並且遍歷了所有的荷葉
分析:最短距離並非遍歷凸多邊形的所有的邊。例如:A(2 3),B(6 3),C(4 1),D(1 1),四個點組成的凸多邊形,最短的遍歷路徑爲ADBC,經過了對角線DB。
使用動態規劃解這道題目。子問題爲每個節點周圍節點數目爲1,2,3,..,時候的問題,在解題的過程中,不斷的擴大每個節點周圍的節點數目。
f(s,L,0)表示從s開始,經過L個頂點的最短距離
f(s,L,1)表示從s+L-1開始,經過L個頂點的最短距離
則 f(s,L,0)=min(f(s+1,L-1,0)+dis(s,s+1), f(s+1,L-1,1)+dis(s,s+L-1));
f(s,L,1)=min(f(s,L-1,1)+dis(s+L-1,s+L-2), f(s,L-1,0)+dis(s,s+L-1));
f[s,1,0]=0;
f[s,1,1]=0;