直接贴代码,还是用的记忆化。
#include<stdio.h>
#include<iostream>
using namespace std;
const int MAX_N=51;
int N,M;
long long A[MAX_N][MAX_N];
int x1,y1,x2,y2;
int init()
{
scanf("%d %d",&N,&M);
scanf("%d %d %d %d",&x1,&y1,&x2,&y2);
A[x1][y1]=1;
}
int r(int x,int y,long long t)
{
if (x<1||y<1||x>N||y>M) return 0;
else A[x][y]+=t;
}
int work()
{
int i,j;
for (i=1;i<=N;i++)
for (j=1;j<=M;j++)
{
r(i+1,j-2,A[i][j]);
r(i+1,j+2,A[i][j]);
r(i+2,j+1,A[i][j]);
r(i+2,j-1,A[i][j]);
}
}
int put()
{
cout<<A[x2][y2];
}
int main()
{
init();
work();
put();
return 0;
}