#include<algorithm> #include<cmath> #include<cstdio> #include<cstdlib> #include<cstring> #include<iostream> #include<string> using namespace std; long long a[25][25]; int main(void) { int cx,cy,bx,by; memset(a,0,sizeof(a)); cin>>bx>>by>>cx>>cy; for(int i=1; i<=bx+1; ++i) { for(int j=1; j<=by+1; j++) { a[i][j]=1; } } bx+=1;//位置从(1,1)有助于构建边界 by+=1; cx+=1; cy+=1; a[1][1]=1; a[cx][cy]=0;//下面标记马所能到达的点 a[cx+2][cy+1]=0; a[cx-2][cy+1]=0; a[cx+2][cy-1]=0; a[cx-2][cy-1]=0; a[cx+1][cy+2]=0; a[cx+1][cy-2]=0; a[cx-1][cy+2]=0; a[cx-1][cy-2]=0; for(int i=1; i<=bx; ++i) { for(int j=1; j<=by; j++) { if(i==1&&j==1) { continue; } else { if(a[i][j]) { a[i][j]=a[i-1][j]+a[i][j-1]; } } } } cout<<a[bx][by]<<endl; return 0; }
原文:https://www.cnblogs.com/Blacktears/p/11262801.html