遞推遞迴 L 馬攔過河卒

2021-07-30 07:32:20 字數 1176 閱讀 4419

題目:

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的整數 同樣馬的位置座標是需...