题目:
算法标签:深度优先搜索 、回溯
代码:
#include<iostream>
using namespace std;
bool map[5][5];
int ans = 0;
void clear(){
for( int i=1; i<=4; i++ ){
for( int j=1; j<=4; j++ ){
map[i][j] = false;
}
}
}
void dfs(int x, int y, int num){
if(num == 16){
ans ++;
return;
}
int tx,ty;
int Next[4][2] = {{-1,0}, {0,1}, {1,0}, {0,-1}};
for( int i=0; i<=3; i++ ){
tx = x + Next[i][0];
ty = y + Next[i][1];
if( tx<1 || tx>4 || ty<1 || ty>4){
continue;
}
if(!map[tx][ty]){
map[tx][ty] = true;
dfs(tx, ty, num+1);
map[tx][ty] = false;
}
}
}
int main(){
for( int i=1; i<=2; i++ ){
for( int j=1; j<=2; j++ ){
clear();
map[i][j] = true;
dfs(i,j,1);
}
}
cout << ans*4;
return 0;
}
答案:552