求最短路徑的條數


最近看到了這么一道題,覺得很有意思,所以就來給大家分享一下:

對於下面這個圖形: 每個正方形的邊長為1, 那么從A到Z的最短路徑條數有多少

這道題的解法有下面的兩種。 

第一種(規律): 

    首先,我們可以肯定的是:最短路徑為6.

 考慮將這個矩形補全,那么從A到Z,需要做的就是從左往右走四步,從上往下走兩步。這個是剛好可以滿足條件的。  我們只需要從這6步中選出兩步是朝下的即可,那么剩下的4步朝右的也就隨之確定了。 所以,C(2, 6),但是這里並不是完整的,而缺少的那兩個朝下的,可以發現, 剛好每個對應着一個路徑,所以最終就是 C(2, 6) - 2。

 

第二種(動態規划)

  我這里粗略的畫了一下:

      

     即根據圖形特點建立坐標軸,我們設 d[x, y] 為從A點出發到(x, y)左邊處時,最短需要走的步數。

  顯然,到(1, 0)為1, 到(2, 0)為2, 到(3, 0)為3。 到(0, 1)為1, 到(1, 1)為2,即我們可以先向右走,然后再向下走;也可以先向下走,然后再向右走,就是這兩種,如下:

    

     其實,我們根據規律就可以得到下面的狀態轉移方程:

d[x, y] = d[x - 1, y] + d[x, y - 1];

  這里其實也是很好理解的,到d[x, y]就是到達x,y 這個點的最短路徑的條數。

       到這一步有兩種方法,一種是最后一步在 (x - 1, y) 這點,另一種就是到達 (x, y - 1)這一點, 所以到達(x, y)這點一共就這兩種可能,相加即可 ,即 d[x - 1, y] + d[x, y - 1]。 

 

 

 

 

  

 

   

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM