SSL1277骑士游历 题解
问题描述:
问题描述:如下图所示有
m
∗
n
m*n
m∗n一个棋盘,在棋盘左下角的A(1,1)点,有一个中国象棋〈马〉,并约定马走的规则:
①走日字;②只能向右走。
找出从A点(1,1)到B点(m,n )的路径条数。
输入:
9 8
输出:
10
分析:
DFS模板题,向四个方向爆搜即可
CODE:
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int M,N,ANS=0;
int x1[11]={0,2,1,-2,-1},y1[11]={0,1,2,1,2};
bool vis[1001][1001]={false};
int DFS(int x,int y)
{
if (x==M&&y==N)
{
ANS++;
}
else
{
for (int i=1;i<=4;i++)
{
if (x+x1[i]<=M&&y+y1[i]<=N&&x+x1[i]>=1&&y+y1[i]>=1)
{
if (vis[x+x1[i]][y+y1[i]])
continue;
vis[x+x1[i]][y+y1[i]]=true;
DFS(x+x1[i],y+y1[i]);
vis[x+x1[i]][y+y1[i]]=false;
}
}
}
}
int main()
{
cin>>M>>N;
vis[1][1]=1;
DFS(1,1);
cout<<ANS;
return 0;
}
一键三连么么哒