題目就不介紹了,自己找找就行了,應該比較容易找到。
看到a點和b點的座標範圍就可以求出陣列的行列範圍了(用來儲存每乙個點到達點b的路徑數);為防止馬的攔截點跑出去,需要將出發點a(0,0)轉化為陣列中的(1,1),這個時候要稍微調整遍歷範圍,記得要開到23格。由於資料可能較大,陣列型別用long long(親測有效)。 因為卒的移動只能是向下一格或者向右一格,所有要到達b(n,m),就必須要到達(n-1,m)或(n,m-1),而到達這兩個點的路徑數也同樣可以這樣一直類推下去。 其狀態轉移方程為f(n,m)=f(n-1,m)+f(n,m-1) 然後將路徑數記憶化。 最後直接輸出就行
#includeusing namespace std;
long long a[23][23];//int型會溢位
int main()
}/*由於我是倒著來的,即由終點到起點,所以這個部分和其他幾個大佬不一樣,但是原理完全相同。*/
cout
} //第一次發,廢話太多請見諒
洛谷 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的整數 同樣馬的位置座標是需要給出的。現在要求你計算...