刚开始一直不懂走日字是咋回事。网上查了,才知道原来是L型走。
就是从当前位置(在不越界的情况下),有8个方向可以走。
- 向上走两格,向左走一格
- 向上走两格,向右走一格
- 向右走两格,向上走一格
- 向右走两格,向下走一格
- 向下走两格,向左走一格
- 向下走两格,向右走一格
- 向左走两格,向上走一格
- 向左走两格,向下走一格
这就跟最基本的走迷宫一样了。dfs或bfs都可以,从当前状态试下一个状态。如果可以就继续搜索。
#include<bits/stdc++.h>
using namespace std;
int mp[8][8];
int cal=0;
int dir[8][2]={2,1,-2,-1,2,-1,-2,1,-1,-2,1,-2,1,2,-1,2};
int ok(int x,int y){
if(x<8&&x>=0&&y<8&&y>=0) return 1;
else return 0;
}
int visit(int x,int y){
if(mp[x][y]!=0) return 1;
else return 0;
}
void dfs(int x,int y){
cal++;
if(cal==65) return;
mp[x][y]=cal;
for(int i=