2020-10-21

it2025-03-16  20

原题链接

#include<cstdio> #include<algorithm> #include<iostream> #include<cstring> using namespace std; int t; int n,m,a,b; const int maxn =15; int dx[8]={1,1,-1,-1,2,2,-2,-2}; int dy[8]={2,-2,-2,2,1,-1,1,-1}; int k,cnt; int vis[maxn][maxn]; void dfs(int x,int y,int cnt){ cnt++; vis[x][y]=1; if(cnt==m*n) { k++; return ; } for(int i=0;i<=7;i++){ int tx=x+dx[i]; int ty=y+dy[i]; if(tx<1||tx>n||ty<1||ty>m) continue; if(vis[tx][ty]==1) continue; dfs(tx,ty,cnt); vis[tx][ty]=0; } } int main(){ cin>>t; while(t--){ memset(vis,0,sizeof(vis)); cnt=0; k=0; cin>>n>>m>>a>>b; dfs(a+1,b+1,0); cout<<k<<endl; } return 0; }

 

最新回复(0)