洛谷1002 過河卒

2022-05-23 02:21:11 字數 1724 閱讀 5580

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

棋盤用座標表示,a點(0, 0)、b點(n, m)(n, m為不超過20的整數),同樣馬的位置座標是需要給出的。

現在要求你計算出卒從a點能夠到達b點的路徑的條數,假設馬的位置是固定不動的,並不是卒走一步馬走一步。

輸入格式:

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

輸出格式:

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

輸入樣例#1:

6 6 3 3
輸出樣例#1:

6
結果可能很大!

題解:這題題意不明,最後調了半天,,,(控制點根本沒說明白是什麼意思啊)。。。

不過特別逗,我上來竟然寫的是bfs爆搜!。。。。。無語了。。。

**之後寫了一發記憶化,發現我是從(0,0)開始搜的= =

完了窩的**能力真的餵狗咯。。。

1 #include2 #include3 #include4 #include5 #include6 #include7 #include8

#define pau putchar(' ')

9#define ent putchar('\n')

10#define mse(a,b) memset(a,b,sizeof(a))

11#define ren(x) for(ted*e=fch[x];e;e=e->nxt)

12#define til(x) for(int i=1;i<=x;i++)

13#define all(x) for(int j=1;j<=x;j++)

14using

namespace

std;

15const

int maxn=20+10;16

const

int dx=;

17const

int dy=;

18const

int cx=;

19const

int cy=;

20bool

vis[maxn][maxn];

21long

long

dp[maxn][maxn];

22long

long ans=0;int

n,m;

23long

long dfs(int x,int

y)return res=tmp;28}

29 inline int

read()

34 inline void write(long

long

x)if(x<0)putchar('

-'),x=-x;

36int len=0;static

long

long buf[20];while(x)buf[len++]=x%10,x/=10;37

for(int i=len-1;i>=0;i--)putchar(buf[i]+'

0');return;38

}39intx,y;

40int

main()write(dfs(n,m));

46return0;

47 }

洛谷 1002 過河卒

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

洛谷 1002 過河卒

雖然這道題目的標籤上有高精,但是用long long int就能ac 看到普及 的難度,本蒟蒻二話不說寫了dfs,結果.只拿了40分,只好改變思路寫了遞推 個人認為dp 遞推 dfs 未ac,無注釋 includeusing namespace std intmx,my,ex,ey bool v 2...

洛谷 P1002 過河卒

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