这道题告诉你了递归与for的速度差距
for循环:
#include <iostream>
#include <cstdio>
using namespace std;
unsigned long long aaa(int x,int y);
int x1,y1,x2,y2,xc,yc;
unsigned long long d[60][60];
int main()
{
cin>>xc>>yc;
cin>>x1>>y1>>x2>>y2;
d[x1][y1]=1;
for(int i=x1+1;i<=x2;i++)
for(int j=1;j<=yc;j++)
{
d[i][j]=d[i-2][j+1]+d[i-2][j-1]+d[i-1][j+2]+d[i-1][j-2];
}
cout<<d[x2][y2];
return 0;
}
递归:
#include <iostream>
#include <cstdio>
using namespace std;
unsigned long long aaa(int x,int y);
int x1,y1,x2,y2,xc,yc;
int main()
{
cin>>yc>>xc;
cin>>y1>>x1>>y2>>x2;
cout<<aaa(x2,y2);
return 0;
}
unsigned long long aaa(int x,int y)
{
if(x<1||x>xc)return 0;
if(y<y1)return 0;
if(y==y1&&x!=x1)return 0;
if(y==y1&&x==x1)return 1;
return aaa(x+1,y-2)+aaa(x-1,y-2)+aaa(x-2,y-1)+aaa(x+2,y-1);
}