解题思路:大家都用bfs,这里提供dfs解法,设置一个二维数组来记录走到每个点的最短距离,那d【n】【m】就是答案
注意事项:
参考代码:
#include<iostream>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<bits/stdc++.h>
using namespace std;
int n,m,a[101][101];
char b[101][101];
int d[101][101];
int xm[5]={0,0,0,1,-1};
int ym[5]={0,1,-1,0,0};
int tx,ty;
void dfs(int x,int y,int k)
{
d[x][y]=k;
for(int i=1;i<=4;i++)
{
tx=x+xm[i];
ty=y+ym[i];
if(b[tx][ty]=='.'&&k+1<d[tx][ty]) dfs(tx,ty,k+1);
}
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cin>>b[i][j];
d[i][j]=INT_MAX;
}
}
dfs(1,1,1);
cout<<d[n][m]<<endl;
return 0;
}
0.0分
2 人评分
C语言程序设计教程(第三版)课后习题6.4 (C语言代码)浏览:782 |
C语言程序设计教程(第三版)课后习题7.2 (C语言代码)浏览:687 |
C语言程序设计教程(第三版)课后习题10.2 (C语言代码)浏览:1483 |
简单的a+b (C语言代码)浏览:457 |
数组与指针的问题浏览:762 |
C语言程序设计教程(第三版)课后习题12.2 (C语言代码)浏览:839 |
1231题解(注意理解“输入多个测试实例”)浏览:830 |
神奇的fans (C语言代码)浏览:1129 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:611 |
C语言程序设计教程(第三版)课后习题6.7 (C++代码)浏览:603 |