P1002 過河卒 動態規劃

2021-09-28 18:23:52 字數 1259 閱讀 2493

傳送門

思路:搜尋tle了,只能dp了。

dp[i][j] = dp[i][j-1]+dp[i-1][j];

對於 點(i,j),只有(i,j-1) 和 (i-1,j)這兩種選擇,那麼可以推出狀態轉移方程

先定義dp[0][0] = 1;

dp[i][j] =dp[i - 1][j] + dp[i][j - 1];

但如果這樣的話,以0,0為起點會出現點被覆蓋的情況,所以我們做一下小改動

然後就有

dp[i][j] = max(dp[i][j],dp[i - 1][j] + dp[i][j - 1]);

如果該點是馬的覆蓋點的話,它必然有0條路線。

if

(vis[i]

[j])

dp[i]

[j]=

0;

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define ll long long

using

namespace std;

const ll maxn =

1e6+5;

const ll minn =

1e9+5;

const ll mod =

1000000007

;const

int inf =

0x3f3f3f3f

;const

long

long limit =

4294967295ll

;vector<

int>v[maxn]

;ll dp[50]

[50];

vector<

int>g[maxn]

;bool row[maxn]

, col[maxn]

;bool flag =0;

int vis[50]

[50];

queue<

int>q;

intmain()

cout << dp[bx]

[by]

<< endl;

return0;

}

P1002 過河卒 (動態規劃 遞推)

p1002 過河卒 動態規劃 遞推 題目描述 棋盤上a a點有乙個過河卒,需要走到目標bb 點。卒行走的規則 可以向下 或者向右。同時在棋盤上cc 點有乙個對方的馬,該馬所在的點和所有跳躍一步可達的點稱為對方馬的控制點。因此稱之為 馬攔過河卒 棋盤用座標表示,aa 點 0,0 0,0 b b點 n,...

P1002 過河卒(動態規劃dp法)

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

洛谷P1002 過河卒(動態規劃)

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