題目簡述:棋盤上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的整數 同樣馬的位置座標是需...