洛谷 p1002過河卒
棋盤上aa點有乙個過河卒,需要走到目標bb點。卒行走的規則:可以向下、或者向右。同時在棋盤上cc點有乙個對方的馬,該馬所在的點和所有跳躍一步可達的點稱為對方馬的控制點。因此稱之為「馬攔過河卒」。
棋盤用座標表示,aa點(0, 0)(0,0)、bb點(n, m)(n,m)(nn, mm為不超過2020的整數),同樣馬的位置座標是需要給出的。
現在要求你計算出卒從aa點能夠到達bb點的路徑的條數,假設馬的位置是固定不動的,並不是卒走一步馬走一步。
一行四個資料,分別表示bb點座標和馬的座標。
乙個資料,表示所有的路徑條數。
輸入 #1
6 6 3 3輸出 #1
6結果可能很大!
思路: 題中涉及到了三個位置,卒不能經過馬走的範圍內(下過象棋的同學就知道,馬能走自身及周圍8個點,題中有強調了 馬所在的位置也是馬的控制點,所以極端狀況下卒是有9個點不能走的)。如果直接搜的話會超時,所以要用動態規劃加遞推來算。因為卒只能前進或右走。所以可以推出狀態轉移方程dp[i][j]=dp[i-1][j]+dp[i][j-1]。**如下:
#include #define ll long long
using namespace std;
int const maxn=10001;
ll dp[21][21]=;
bool cb[21][21]=;
int dx[9]=;
int dy[9]=;
int main()
for(int i=0;i<=n;i++)
} 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的整數 同樣馬的位置座標是需要給出的。現在要求你計算...