|
#include<iostream>
#include<cstring>
using namespace std;
#define N 11
int a[8][2]={{-2,-1},{-2,1},{-1,2},{1,2},{2,1},{2,-1},{1,-2},{-1,-2}};
bool s[N][N];
int n,m,t,x,y;
int ans=0;
void dfs(int px,int py,int step){
if(step==n*m){
ans++;
return ;
}
for(int i=0;i<8;i++){
int nx=px+a[i][0];
int ny=py+a[i][1];
if(nx>=0&&nx<n&&ny>=0&&ny<m&&s[nx][ny]==false){
s[nx][ny]=true;
dfs(nx,ny,step+1);
s[nx][ny]=false;
}
}
}
int main(){
cin>>t;
for(int i=1;i<=t;i++){
cin>>n>>m>>x>>y;
ans=0;
memset(s,0,sizeof(s));
s[x][y]=true;
dfs(x,y,1);
cout<<ans<<'\n';
}
return 0;
} |
|