"#"表示障碍"*"表示路
#include<bits/stdc++.h>
using namespace std;
int n, m, a[110][110], b[110][110];
int xu, yu, xp, yp;
int ans, minn = 1e9;
int ux[5], uy[5];
void dfs(int x, int y, int cnt) {
if(x == xp && y == xp) {
if(cnt < minn) {
minn = cnt;
}
ans ++;
return ;
}
for(int i = 1;i <= 4;i ++) {
int xx = x + ux[i], yy = y + uy[i];
if(a[xx][yy] && b[xx][yy] == 0) {
b[x][y] = 1;
dfs(x + ux[i], y + uy[i], cnt + 1 );
b[x][y] = 0;
}
}
}
int main() {
//freopen("findfriend.in", "r", stdin);
//freopen("findfriend.out", "w", stdout);
cin >> n >> m;
for(int i = 1;i <= n;i ++) {
for(int j = 1;j <= m;j ++) {
char c;
cin >> c;
if(c == '*') a[i][j] = 1;
}
}
cin >> xu >> yu >> xp >> yp;
xu += 1, yu += 1, xp += 1, yp += 1;
if(xu > xp) {
ux[1] = -1;
ux[2] = 1;
}
else ux[1] = 1, ux[2] = -1;
if(yu > yp) {
uy[3] = -1;
uy[4] = 1;
}
else uy[3] = 1, uy[4] = -1;
dfs(xu, yu, 1);
cout << ans << endl << minn;
return 0;
}
求助