#include<bits/stdc++.h>
using namespace std;
int n,m,x,y;
bool vis[100][100];
int dir[8][2]={{-2,-1},{-2,1},{2,-1},{2,1},{1,2},{1,-2},{-1,2},{-1,-2}};
int ans=0;
void dfs(int a,int b){
bool f=0;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(!vis[i][j]) f=1;
}
}
if(!f){
ans++;
return;
}
for(int i=0;i<8;i++){
int f=a+dir[i][0];
int g=b+dir[i][1];
if(!vis[f][g]&&f>=0&&f<n&&g>=0&&g<m){
vis[f][g]=1;
dfs(f,g);
vis[f][g]=0;
}
}
}
int main(){
int t;
cin>>t;
for(int i=0;i<t;i++){
ans=0;
memset(vis,0,sizeof(vis));
cin>>n>>m>>x>>y;
vis[x][y]=1;
dfs(x,y);
cout<<ans<<endl;
}
return 0;
}
1219:马走日(DFS)
最新推荐文章于 2023-11-14 21:36:44 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)