提交记录
题目
用的是深搜。
#include<bits/stdc++.h>
using namespace std;
long long bx,by,mx,my,dt[25][25],pd,pd2,pd3,pd4,ljs;
void zmg(int x,int y)
{
if(x==bx&&y==by)
{
ljs++;
return ;
}
pd=0;
pd2=0;
pd3=0;
pd4=0;
if(x-1>=0) if(dt[x-1][y]==-1) pd=1;
if(x+1<=bx) if(dt[x+1][y]==-1) pd2=1;
if(y-1>=0) if(dt[x][y-1]==-1) pd3=1;
if(y+1<=by) if(dt[x][y+1]==-1) pd4=1;
if(pd==1&&pd2==1&&pd3==1&&pd4==1) return ;
dt[x][y]=-1;
if(dt[x+1][y]!=-1&&x+1<=bx) zmg(x+1,y);
if(dt[x-1][y]!=-1&&x-1>=0) zmg(x-1,y);
if(dt[x][y+1]!=-1&&y+1<=by) zmg(x,y+1);
if(dt[x][y-1]!=-1&&y-1>=0) zmg(x,y-1);
dt[x][y]=0;
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>bx>>by>>mx>>my;
if(mx-2>=0)
{
if(my-1>=0) dt[mx-2][my-1]=-1;
if(my+1<=by) dt[mx-2][my+1]=-1;
}
if(mx-1>=0)
{
if(my-2>=0) dt[mx-1][my-2]=-1;
if(my+2<=by) dt[mx-1][my+2]=-1;
}
if(mx+1<=bx)
{
if(my-2>=0) dt[mx+1][my-2]=-1;
if(my+2<=by) dt[mx+1][my+2]=-1;
}
if(mx+2<=bx)
{
if(my-1>=0) dt[mx+2][my-1]=-1;
if(my+1<=by) dt[mx+2][my+1]=-1;
}
zmg(0,0);
cout<<ljs;
return 0;
}