遞推遞迴練習 L 馬攔過河卒

2021-07-29 12:27:25 字數 812 閱讀 7067

description

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

input

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

output

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

sample input

6 6 3 3

sample output

6

這道題為遞推問題,(n,m)處的總路徑等於(n-1,m)與(n,m-1)的路徑之和,以次類推。所以有基本遞推公式f(n,m)=f(n-1,m)+f(n,m-1)。

基本思路為將馬跳不到的地方初始化為1,將馬的地方跟馬調到的地方初始化為0,如果迴圈到的那個格不等於0,則f(n,m)=f(n-1,m)+f(n,m-1);如果等於0,就還保持原值0。所以f(n,m)即總路線。

源**如下:

#include

using namespace std;

int a[16][16];

int f(int n,int m);

int main()

cout<

需要注意的是,當i=0或j=0時的越界問題,i=0或j=0時單獨討論即可。

遞推遞迴練習 L 馬攔過河卒

題目簡述 棋盤上a點有乙個過河卒,需要走到目標b點。卒行走的規則 可以向下 或者向右。同時在棋盤上c點有乙個對方的馬,該馬所在的點和所有跳躍一步可達的點稱為對方馬的控制點。因此稱之為 馬攔過河卒 棋盤用座標表示,a點 0,0 b點 n,m n,m為不超過15的整數 同樣馬的位置座標是需要給出的。現在...

遞推遞迴 L 馬攔過河卒

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

L 馬攔過河卒

description 棋盤上a點有乙個過河卒,需要走到目標b點。卒行走的規則 可以向下 或者向右。同時在棋盤上c點有乙個對方的馬,該馬所在的點和所有跳躍一步可達的點稱為對方馬的控制點。因此稱之為 馬攔過河卒 棋盤用座標表示,a點 0,0 b點 n,m n,m為不超過15的整數 同樣馬的位置座標是需...