【问题描述】在一个n*m的棋盘上上有一点p(x,y)的中国象棋马,而另一点q为马的家,同时约定q在p的右边,且马只能向右走日字。从p到q一共有多少条路。
这道题代码非常简单,上代码吧。。
#include<cstdio>
#include<algorithm>
#include<iostream>
using namespace std;
int dx[4]={-1,0,1,0};//-1,-2,-2,-1
int dy[4]={0,-1,0,1};//2,1,-1,-2
int x,y,x1,y1;
int n,m,sum;
int f[100][100];
int dfs(int x2,int y2)
{
int sum=0;
int ddx,ddy;
if(x2==x &&y2==y) return 1;
if(x2<x) return 0;
if(f[x2][y2]>0) return f[x2][y2];
for(int i=0;i<=3;i++)
{
ddx=x2+dx[i];
ddy=y2+dy[i];
if(ddx>=0 && ddx<m &&ddy>=0 &&ddy<n)
{
sum=dfs(ddx,ddy);
}
f[x2][y2]=sum+f[x2][y2];
}
return f[x2][y2];
}
int main()
{
scanf("%d%d",&n,&m);
scanf("%d%d%d%d",&x,&y,&x1,&y1);
//memset(f,0,sizeof(f));
dfs(x1,y1);
printf("%d",f[x1][y1]);
while(1);
return 0;
}