文章目录 题322.dfs搜索顺序-acwing-Q1116-- 马走日一、题目二、题解 题322.dfs搜索顺序-acwing-Q1116-- 马走日 一、题目 二、题解 #include <bits/stdc++.h> using namespace std; const int maxn=10; const int dx[]={-1,-1,-2,-2,1,1,2,2};//dx从小到大罗列 const int dy[]={-2,2,-1,1,-2,2,-1,1};//然后dy对照dx直接写就好 int n,m,sx,sy; int vis[maxn][maxn]; int ans; void dfs(int x,int y,int cnt) { if(cnt==n*m) { ans++; return; } for(int i=0;i<8;i++) { int nx=x+dx[i]; int ny=y+dy[i]; if(nx<0||nx>=n||ny<0||ny>=m) { continue; } if(vis[nx][ny]) { continue; } vis[nx][ny]=1;// dfs(nx,ny,cnt+1); vis[nx][ny]=0;//回溯 } } int main() { int T; cin>>T; while(T--) { cin>>n>>m>>sx>>sy; ans=0; vis[sx][sy]=1;// dfs(sx,sy,1); vis[sx][sy]=0;//回溯 cout<<ans<<endl; } }