DP题,马前卒,代码求指正
思路是用map记录障碍点(记为1),dp时若非1则dp[i][j]=dp[i-1][j]+dp[i][j-1]
原题洛谷:https://www.luogu.com.cn/problem/P1002
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#define INF 1e9
using namespace std;
int dx[]={-2,-1,1,2,-2,-1,1,2};
int dy[]={-1,-2,-2,-1,1,2,2,1};
bool map[22][22];
int dp[22][22];
int Bx,By,Hx,Hy;
//dp[i][j]=dp[i-1][j]+dp[i][j-1]
int main(){
memset(map,0,sizeof(map));
cin>>Bx>>By>>Hx>>Hy;
map[Hx][Hy]=1;
for(int i=0;i<8;i++){
int x=Hx+dx[i];
int y=Hx+dy[i];
if(x<0||y<0||x>Bx||y>By)continue;
map[x][y]=1;
}
dp[0][1]=1;
for(int i=1;i<Bx;i++){
for(int j=1;j<By;j++){
if(map[i][j]==0)dp[i][j]=dp[i-1][j]+dp[i][j-1];
}
}
cout<<dp[Bx-1][By-1];
return 0;
}