馬攔過河卒

2021-07-26 08:27:13 字數 1183 閱讀 1421

馬攔過河卒

描述 description

棋盤上a點有乙個過河卒,需要走到目標b點。卒行走的規則:可以向下、或者向右。同時在棋盤上c點有乙個對方的馬,該馬所在的點和所有跳躍一步可達的點稱為對方馬的控制點。因此稱之為「馬攔過河卒」。

棋盤用座標表示,a點(0, 0)、b點(n, m)(n, m為不超過20的整數),同樣馬的位置座標是需要給出的。現在要求你計算出卒從a點能夠到達b點的路徑的條數,假設馬的位置是固定不動的,並不是卒走一步馬走一步。

輸入格式 input format

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

輸出格式 output format

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

樣例輸入 sample input

6 6 3 3

樣例輸出 sample output

** source

noip2002普及組第4題

用f[i,j]來表示從(0,0)到(i,j)這個點的路徑數量。由於卒只能向下或向右走,因此他上一步只有可能在(i-1,j)或者(i,j-1)處,所以到這點的路徑數量便是到這兩點的路徑數量之和。

同時如果卒在第一行或者第一列時,只有乙個方向。

用map(i,j)來表示這個點是否能走,然後初始化,去掉所有馬佔的點(馬所在的地方也要去掉)。還要把原點去掉,因為原點到原點的路徑是唯一而且沒有點能到原點了。

#include

using

namespace

std;

bool

map[21][21]=;

long

long f[21][21]=;

int xx[3]=;

int yy[3]=;

int max(int a,int b);

void change(int a,int b);

int main()

change(x2,y2);

int i=0,j=0;

f[0][0]=1;

for (i=1;i<=x1;i++)

for (j=1;j<=y1;++j)

}for (i=1;i<=x1;i++)

for (j=1;j<=y1;j++)

cout

void change(int a,int b)

馬攔過河卒

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

馬攔過河卒

如圖,a點有乙個過河卒,需要走到目標 b點。卒行走規則 可以向下 或者向右。同時在棋盤上的任一點有乙個對方的馬 如上圖的c點 該馬所在的點和所有跳躍一步可達的點稱為對方馬的控制點。例如上圖 c點上的馬可以控制 9個點 圖中的p1,p2 p8和 c 卒不能通過對方馬的控制點。棋盤用座標表示,a點 0,...

馬攔過河卒

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