題目描述
棋盤上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 到達目的地結束 ...