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

2021-07-30 14:54:51 字數 1169 閱讀 9362

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

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

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

解題思路:

1、讀題可知,題目是乙個棋盤,所以很容易的考慮到用二維陣列。

2、遞推遞迴問題,即首先確定乙個二維陣列,令其值均為1,馬能到達的位置的值設為-1,然後開始迴圈。

3、迴圈如下:如果走到馬能到達的位置,則continue;如果i-1>=0並且a[i-1][j]>=0,a[i][j]=a[i][j]+a[i-1][j];即該二維陣列存的值為到達某一點的路徑數。

源**:

#include

using

namespace std;

intmain();

a[x2][y2]=-1;

a[x2-2

][y2+1

]=-1

; a[x2-1

][y2+2

]=-1

; a[x2-2

][y2-1

]=-1

; a[x2-1

][y2-2

]=-1

; a[x2+1

][y2+2

]=-1

; a[x2+1

][y2-2

]=-1

; a[x2+2

][y2+1

]=-1

; a[x2+2

][y2-1

]=-1

; a[0][

0]=1;

for(i=

0;i<=x1;i++)

} cout<}return0;

}

解題感想:這道題考慮了很長時間,就是中間過程的分析還不夠熟練,二維陣列運用還不夠熟練,還應該再多看一些類似的題。

遞推遞迴練習 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的整數 同樣馬的位置座...

L 馬攔過河卒

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