傳送門
這道題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的整數 同樣馬的位置座標是需要給出的。現在要求你計算...