#include <bits/stdc++.h> using namespace std; char a[150][150]; //存储到达每个点最少需要多少步 int d[150][150]; int m,n; //递归求步数 void fun(int dep,int i,int j){ if(dep < d[i][j]){ d[i][j] = dep; if(a[i-1][j] == '.') fun(dep+1,i-1,j); if(a[i+1][j] == '.') fun(dep+1,i+1,j); if(a[i][j-1] == '.') fun(dep+1,i,j-1); if(a[i][j+1] == '.') fun(dep+1,i,j+1); } } int main(){ int i,j; cin>>n>>m; //.表示能走,#表示不能走 for(i = 1;i <= n;i++){ for(j = 1;j <= m;j++){ cin>>a[i][j]; d[i][j] = INT_MAX; } } fun(1,1,1); cout<<d[n][m]<<endl; } /************************************************************** Problem: 1432 User: admin Language: C++ Result: Accepted Time:28 ms Memory:2184 kb ****************************************************************/