過河卒 動態規劃 計算出每個點若為目標點的路徑數

2021-08-08 23:33:14 字數 1047 閱讀 7403

題目描述

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

題目鏈結

input

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

output

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

示例

輸入樣例#1

6 6 3 3

輸出樣例#1

6提示

結果可能很大!

思路

動態規劃一步一步計算出每個點若為目標點的路徑數,最後列印給出的目標點的路徑數即可。

**(c++)

#includeusing namespace std;

const int maxn=25;

const int d[8][2]=,,,,,,,};//馬控制的八個方位(不包括馬自身的位置)

long long f[maxn][maxn];

int n,m,x,y;

int main()

printf("%lld\n",f[n][m]);

}else printf("0\n");

return 0;

}

個人感悟

尤其需要注意的就是陣列不能越界,即馬控制的八個方向存不存在陣列越界問題,其次需要注意卒的初始位置是(0,0)不是(1,1),到目標點的橫向和總想成都分別為n+1,m+1。

過河卒(動態規劃)

題目描述 棋盤上aa點有乙個過河卒,需要走到目標bb點。卒行走的規則 可以向下 或者向右。同時在棋盤上cc點有乙個對方的馬,該馬所在的點和所有跳躍一步可達的點稱為對方馬的控制點。因此稱之為 馬攔過河卒 棋盤用座標表示,aa點 0,0 0,0 bb點 n,m n,m nn,mm為不超過2020的整數 ...

過河卒 動態規劃 高精度

題目 過河卒 問題編號 69 如圖,a 點有乙個過河卒,需要走到目標 b 點。卒行走規則 可以向下 或者向右。同時在棋盤上的任一點有乙個對方的馬 如上圖的c點 該馬所在的點和所有跳躍一步可達的點稱為對方馬的控制點。例如上圖 c 點上的馬可以控制 9 個點 圖中的p1,p2 p8 和 c 卒不能通過對...

動態規劃 洛谷 過河卒

第 dp i j 個位置到達的可能性是第 dp i 1 j 個位置方案數 第 dp i j 1 個位置的方案數 題目中馬以 日 字形沿各方向跳出的點才是題目中所謂馬控制的九個點,而不是馬座標周圍的九個點 題目的座標系是以第四象限為平面,卒可向下或向右 dfs求路徑總數要設定邊界 1 到達目的地結束 ...