第一行输入n,m表示棋盘大小
第二行输入x,y表示马的初始位置。
#include<iostream>
using namespace std;
int n,m;
char maze[110][110];
bool vis[110][110];
int dir[8][2]={{1,2},{2,1},{1,-2},{2,-1},{-1,-2},{-2,-1},{-1,2},{-2,1}};
bool in (int x,int y){
if (x>=0&&x<n&&y>=0&&y<m){
return true;
}
return false ;
}
void dfs (int x,int y,int cnt)
{
if (cnt>3){
return ;
}
if (!in(x,y)){
return ;
}
maze[x][y]='#';
for (int i=0;i<8;i++){
int dx=x+dir[i][0];
int dy=y+dir[i][1];
dfs (dx,dy,cnt+1);
}
}
int main ()
{
int x,y;
cin>>n>>m;
cin>>x>>y;
for (int i=0;i<n;i++){
for (int j=0;j<m;j++){
maze[i][j]='.';
}
}
dfs (x-1,y-1,0);
for (int i=0;i<n;i++){
printf ("%s\n",maze[i]);
}
return 0;
}
欢迎关注我的公众号:王同学的蓝桥杯训练营