0
点赞
收藏
分享

微信扫一扫

计蒜客 马的覆盖点 dfs

小磊z 2022-06-29 阅读 28

题意:已知马走日,可以走八个方向,现用 · 表示可走的路,# 表示到达的点。
给出马的一个初始位置,请输出马在三步内可以到达的点(图来表示)。
思路:dfs暴力搜索即可。注意: # 不要返回,因为走三步时可能经过这个点。

#include<iostream>
#include<cstring>
#include<algorithm>
#include<cstdio>
#include<cstdlib>
#include<queue>
#include<cmath>
#include<cctype>
#include<stack>
#include<map>
#include<string>
#include<cstdlib>
#define ll long long
#define N 100010
using namespace std;
const ll maxn = 1e2 + 5;
//ll a[maxn],b[maxn];
bool vis[maxn];
int ans[maxn];
vector<int>v[maxn];
int n, m;
char a[maxn][maxn];
int dir[8][2]={-2,1,-2,-1,2,1,2,-1,1,2,1,-2,-1,2,-1,-2};
void dfs(int x,int y,int step)
{
int tx,ty;
for(int i=0;i<8;i++)
{
tx=x+dir[i][0];
ty=y+dir[i][1];
if(tx>=n||tx<0||ty>=m||ty<0||step==3)
continue; ;
a[tx][ty]='#';
dfs(tx,ty,step+1);
}
return ;
}
int main()
{
int x,y;
cin>>n>>m;
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
a[i][j]='.';
cin>>x>>y;
a[x][y]='#';
dfs(x-1,y-1,0);
for(int i=0;i<n;i++)
printf("%s\n",a[i]);
return 0;
}


举报

相关推荐

0 条评论