设有一个 n×m 的棋盘(2 ≤ n ≤ 50,2 ≤ m ≤ 50),在棋盘上任一点有一个中国象棋“马”,马走的规则为:马走日字;马只能向右走。当 n,m 给出后,同时给出马起始的位置和终点的位置,试找出从起点到终点所有路径的数目。
输入格式
n,m,x1,y1,x2,y2 (分别表示棋盘大小、起点坐标和终点坐标)。
输出格式
路径数目(若不存在,则输出0)
输入/输出例子1
输入:
30 30 1 15 5 15
输出:
8
样例解释
无
#include<bits/stdc++.h>
using namespace std;
long long n,m,x, y, xx, yy, a[55][55];
bool f(int x,int y)
{
if(x>=1 && x <= n && y>=1 && y <= m) return 1;
return 0;
}
int main()
{
cin>>n>>m>>x>>y>>xx>>yy;
swap(n,m);swap(x,y);swap(xx,yy);
a[x][y]=1;
for(int j=y+1;j <= yy;j++)
for(int i=1;i <= n;i++)
{
if(f(i-2,j-1)) a[i][j]+=a[i-2][j-1];
if(f(i-1,j-2)) a[i][j]+=a[i-1][j-2];
if(f(i+1,j-2)) a[i][j]+=a[i+1][j-2];
if(f(i+2, j-1)) a[i][j]+=a[i+2][j-1];
}
cout <<a[xx][yy];
return 0;
}