洛谷P1002過河卒(dp)

2021-10-02 17:03:19 字數 786 閱讀 4470

第一次自己做出了一道簡單dp題目,發篇部落格紀念一下哈啊哈哈

思路:先找到狀態轉移方程,根據dp定義,把大問題所求變成乙個個子問題,我要知道某個位置的路徑數目,那麼我要知道,到達這個位置之前每乙個位置能有多少種方法到達,那麼我每乙個位置的路徑數目與上乙個位置的路徑數目有關 ,上乙個位置無非是左邊一點和上邊一點即縱座標+1和橫座標-1。

細節:這裡我是把圖形倒過來的,即(0,0)是在左下角的,看成座標系,題目給的橫座標相應的變成了座標系裡的縱座標。

還有就是第乙個if,這是用來搞馬的控制點的,就是說我這個點如果是馬的控制點,那我根本不能到達,所以把這個點的路徑數目賦值為0

dp[0][0]=1,因為你出發點就是(0,0),那你不動,不就是有一種方法到達(0,0)嘛

#include

long

long dp[

200]

[200];

long

long

abs(

long

long a)

intmain()

else

if(i==

0&&j==0)

else

if(i-

1<0)

else

if(j-

1<0)

else

if(j>=

1&&i>=1)

}}printf

("%lld\n"

,dp[a]

[b])

;return0;

}

洛谷P1002 過河卒 DP

不需要搜尋,很容易就能求出轉移方程。f i j 從兩個方向即f i 1 j 和f i j 1 轉移過來,但是要注意邊界情況,因為下標從0開始會有負數的情況,所以f整個平移一位,f 1 1 可以從f 1 0 轉移過來。另外注意馬所在的位置也需要被標記。結果很大要開long long。include u...

洛谷 P1002 過河卒

棋盤上a點有乙個過河卒,需要走到目標b點。卒行走的規則 可以向下 或者向右。同時在棋盤上c點有乙個對方的馬,該馬所在的點和所有跳躍一步可達的點稱為對方馬的控制點。因此稱之為 馬攔過河卒 棋盤用座標表示,a點 0,0 b點 n,m n,m為不超過20的整數 同樣馬的位置座標是需要給出的。現在要求你計算...

洛谷P1002過河卒

dp水題,我都會做 我們考慮地圖上i,j的位置可以怎麼過來,因為卒只能向下或向右,所以當前位置只能由它的上方或左方轉移過來,所以f i j f i 1 j f i j 1 然後考慮邊界情況,沿著上沿和左沿只能向乙個方向走,所以f i 0 0,f 0 i 0,這是不考慮有馬的情況,當馬加入圖中後,我們...