NEUQ 1289 馬攔過河卒

2021-07-04 10:22:23 字數 1001 閱讀 1616

時間限制: 1 sec  

記憶體限制: 128 mb

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

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

一行四個資料,分別表示b點座標和馬的座標。(保證所有的資料有解)

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

6 6 3 3
6

吉首大學軟體學院

分析:用dfs演算法進行搜尋,計算出所有的路徑條數。

code:

#include #include using namespace std;

int maze[20][20],ans;

int a,b,c,d;

void dfs(int i,int j)

if(maze[i][j]||i>a||j>b)

return ;

dfs(i+1,j);

dfs(i,j+1);

return ;

}int main()

{ while(cin>>a>>b>>c>>d){

memset(maze,0,sizeof(maze));

ans=0;

a+=2,b+=2,c+=2,d+=2;

maze[c][d]=1;

maze[c-2][d+1]=maze[c-2][d-1]=1;

maze[c-1][d+2]=maze[c-1][d-2]=1;

maze[c+1][d+2]=maze[c+1][d-2]=1;

maze[c+2][d+1]=maze[c+2][d-1]=1;

dfs(2,2);

cout<

馬攔過河卒

問題描述 棋盤上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的整數 同樣...