1219:马走日

马走日

 1 #include<iostream>
 2 #include<cstring>
 3 using namespace std;
 4 
 5 int a[10][10],r[16],n,m,cnt;
 6 
 7 void dfs(int x,int y,int d){
 8     if(d==n*m){
 9         cnt++;
10         return;
11     }
12     a[x][y]=1;
13     for(int i=0;i<8;i++){
14         int nx=x+r[i],ny=y+r[i+8];
15         if(nx>=0&&nx<n&&ny>=0&&ny<m&&!a[nx][ny]){
16             dfs(nx,ny,d+1);
17             a[nx][ny]=0;
18         }
19     }
20 }
21 int main(){
22     r[0]=r[7]=2,r[1]=r[6]=1,r[2]=r[5]=-1,r[3]=r[4]=-2;
23     r[8]=r[11]=-1,r[9]=r[10]=-2,r[12]=r[15]=1,r[13]=r[14]=2;
24     int k,x,y;
25     cin>>k;
26     while(k--){
27         cin>>n>>m>>x>>y;
28         cnt=0;
29         memset(a,0,sizeof(a));
30         dfs(x,y,1);
31         cout<<cnt<<endl;
32     }
33     return 0;
34 }

 

posted @ 2021-08-09 16:25  Rekord  阅读(158)  评论(0)    收藏  举报