題目:
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
解題思路:
這道題不是我自己做出來的,當時只想到了馬的周圍有8個點不能走,但是怎麼求總的路線卻是沒有思路的,無奈之下去網上找了找解答,看完才發現這道題跟課件裡面的吃金幣遊戲的解題思路是一樣的,每個點的路線個數等於它左邊和上邊的個數之和,注意要判斷整個棋盤的邊界否則會越界。
#include
using
namespace std;
int a[
21][21]
=;void
soldier
()for
(i =
0; i <= n; i++)
a[i][j]=0
;if(j-1
>=
0&& a[i][j-1]!=
-1) a[i][j]
+= a[i][j-1
];if
(i-1
>=
0&& a[i-1
][j]!=-
1)a[i][j]
+= a[i-1
][j];
if(a[i][j]==0
) a[i][j]=-
1;}}
if(a[n][m]==-
1) cout <<0;
else cout << a[n][m];
}int
main
()
回顧:
這道題畢竟不是自己做出來的,希望下次遇到類似的不會再這樣了。
遞推遞迴練習 L 馬攔過河卒
description 棋盤上a點有乙個過河卒,需要走到目標b點。卒行走的規則 可以向下 或者向右。同時在棋盤上c點有乙個對方的馬,該馬所在的點和所有跳躍一步可達的點稱為對方馬的控制點。因此稱之為 馬攔過河卒 棋盤用座標表示,a點 0,0 b點 n,m n,m為不超過15的整數 同樣馬的位置座標是需...
遞推遞迴練習 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的整數 同樣馬的位置座標是需...