这是一道简单的DP题,然而作为蒟蒻的我依旧作了许多遍。QwQ
马可以在起点
所以需要特判,在代码环节会提到
上代码
#include<iostream> #include<cstring> #include<cstdio> #include<algorithm> #define ull unsigned long long using namespace std; const int fx[]={0,-2,-1,1,2,2,1,-1,-2}; const int fy[]={0,1,2,2,1,-1,-2,-2,-1}; int bx,by,mx,my; ull ans; ull f[30][30]; bool s[30][30]; int main(){ scanf("%d%d%d%d",&bx,&by,&mx,&my); ++bx; ++by; ++mx; ++my; f[1][1]=1; s[mx][my]=1; for(int i=1;i<=8;i++) s[ mx + fx[i] ][ my + fy[i] ]=1; for(int i=1;i<=bx;i++){ for(int j=1;j<=by;j++){ if(s[i][j])continue; f[i][j]=max( f[i][j] , f[i-1][j] + f[i][j-1] ); } } printf("%llu\n",f[bx][by]); return 0; }//完美收工
原文:https://www.cnblogs.com/20070618hyz/p/12734825.html