样例输出
.........
.........
.........
.#.#.....
#.#.#....
####.#...
#####.#..
##.###...
#.###.#..
######...
#include <cstdio>
using namespace std;
#include <vector>
#include <iostream>
char map[105][105];
int dir[8][2] = { {-2,-1},{-1,-2}, {1,-2}, {2,-1}, {2,1}, {1,2}, {-1,2}, {-2,1} };
int n, m, x, y;
bool in(int x, int y) {
return x >= 1 && x <= n && y >= 1 && y <= m;
}
void dfs(int x, int y,int step) {
if (step > 3) return; //重点,此处step限制马走的步数
map[x][y] = '#'; //标记
for (int j = 0; j < 8; ++j) {
int dx = x + dir[j][0];
int dy = y + dir[j][1];
if (in(dx, dy)) {
dfs(dx, dy, step + 1);
}
}
}
int main() {
cin >> n >> m;
//初始化棋盘
for (int i = 1; i <= n; ++i) {
for (int j = 1; j <= m ; ++j) {
map[i][j] = '.';
}
}
for (int i = 1; i <= n; ++i) {
for (int j = 1; j <= m; ++j) {
cout << map[i][j];
}
cout << endl;
}
cin >> x >> y;
//从起点开始走
dfs(x, y,0);
//打印棋盘
for (int i = 1; i <= n; ++i) {
for (int j = 1; j <= m; ++j) {
cout << map[i][j];
}
cout << endl;
}
while (1);
return 0;
}