傳送門
思路:搜尋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的整數 同樣馬的位置座標是需要給出的。現在要求你計算...