
DFS模板
#include<bits/stdc++.h> using namespace std; #define MAXN 10 int mp[MAXN][MAXN],vis[MAXN][MAXN]; int res; int xx[4]={1,-1,0,0},yy[4]={0,0,-1,1}; struct node{ int x,y; int step; }; void dfs(node n){ vis[n.x][n.y]=1; if(n.step == 16){ res++; return ; } for(int i=0;i<4;i++) { node z; z.x =n.x+xx[i],z.y=n.y+yy[i],z.step=n.step+1; if(z.x<1||z.x>4||z.y<1||z.y>4||vis[z.x][z.y])continue; dfs(z); vis[z.x][z.y]=0;//recall } } int main() { for(int i=1;i<=4;i++){ for(int j=1;j<=4;j++){ memset(vis,0,sizeof(vis)); node t; t.x=i,t.y=j,t.step=1; dfs(t); } } return cout<<res<<endl,0; }
cpp
运行
1234567891011121314151617181920212223242526272829303132333435363738394041
DFS模板介绍