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;
}