洛谷P1002 過河卒 題解 動態規劃

2022-05-19 22:07:30 字數 807 閱讀 9877

棋盤上\(a\)點有乙個過河卒,需要走到目標\(b\)點。卒行走的規則:可以向下、或者向右。同時在棋盤上cc點有乙個對方的馬,該馬所在的點和所有跳躍一步可達的點稱為對方馬的控制點。因此稱之為「馬攔過河卒」。

棋盤用座標表示,\(a\)點\((0, 0)\)、\(b\)點\((n, m)\)(\(n\), \(m\)為不超過\(20\)的整數),同樣馬的位置座標是需要給出的。

現在要求你計算出卒從\(a\)點能夠到達\(b\)點的路徑的條數,假設馬的位置是固定不動的,並不是卒走一步馬走一步。

一行四個資料,分別表示\(b\)點座標和馬的座標。

乙個資料,表示所有的路徑條數。

6 6 3 3
6
首先,不難看出,這是一道動態規劃問題。

我們可以令 \(f[i][j]\) 表示從 \((0,0)\)(左上方的點)走到 \((i,j)\) (第\(i\)行第\(j\)列)的方案數。

那麼,在不考慮馬的存在的時候,可以得到狀態轉移方程如下:

但是,這裡有馬的存在,左移在上述條件的基礎上,我們必須先進行一步判斷(並且這一步判斷還是必須放在最前面的):

實現**如下:

#include using namespace std;

int n, m, x, y;

long long f[22][22];

int main()

}cout << f[n][m] << endl;

return 0;

}

洛谷題解P1002 過河卒

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

洛谷 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,這是不考慮有馬的情況,當馬加入圖中後,我們...