蓝桥杯真题 [玩具蛇]
https://www.lanqiao.cn/problems/1022/learning/
题目:
思路:
暴力搜索,因为正方形是对称的,所以我们起点只需要在左上角,最后答案乘4即可
从起点开始深度搜索,如果步数等于 16 16 16,也就说明把玩具放完了, a n s ans ans就加一
代码:
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const ll MAX = 1e5 + 5;
int ans=0;
int Map[5][5];
void dfs(int x,int y,int sum){
if(sum==16){
ans++;
return ;
}
int mark[][2]={{1,0},{-1,0},{0,1},{0,-1}};
for(int i=0;i<4;i++){
int tx=x+mark[i][0];
int ty=y+mark[i][1];
if(tx>=1&&tx<=4&&ty>=1&&ty<=4&&Map[tx][ty]==0){
Map[x][y]=1;
dfs(tx,ty,sum+1);
Map[x][y]=0;
}
}
}
int main(){
int mark[][2]={{1,1},{1,2},{2,1},{2,2}};
for(int i=0;i<4;i++){
Map[mark[i][0]][mark[i][1]]=1;
dfs(mark[i][0],mark[i][1],1);
Map[mark[i][0]][mark[i][1]]=0;
}
cout<<ans*4;
return 0;
}