P1002 過河卒(洛谷)

2021-10-10 11:22:59 字數 1107 閱讀 1097

傳送門

這道題dp題~

馬所控制的點不允許走,問路徑有多少條。

我先開始試試用dfs寫的,tle了。

最後還是dp解決的。

這道題需要注意的是範圍問題。

因為馬控制了包括它自己位置所在內的9個點。注意這九個點是否都在地圖的範圍之內,需要判斷一下。然後這些點不能走。

之後兩重迴圈遍歷就行。

因為題目規定只能往下走或者往右走,所以乙個點只允許從上或者從左走過來,這兩個方向上的和就是當前點的路徑數。

初始話座標(0,0)的路徑dp[0][0] = 1;就行

注意開long long,因為可能有超級多條

**部分:

#include

using

namespace std;

typedef

long

long ll;

const

int n =25;

const

int dir[2]

[2]=

,};ll mp[n]

[n];

ll dp[n]

[n];

int a, b;

int n, m;

intmain()

if(n +

1<= a && m +

2<= b)

if(n -

1>=0)

if(n -

2>=0)

if(n -

2>=

0&& m -

1>=0)

if(n -

1>=

0&& m -

2>=0)

if(m -

2>=0)

if(m -

1>=0)

for(

int i =

0; i <= a; i++)if

(mp[i]

[j]==-1

)if(i -

1>=0)

if(j -

1>=0)

}}cout << dp[a]

[b]<< endl;

return0;

}

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

洛谷 P1002 過河卒

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