1 条题解
-
0MrContinue LV 4 MOD @ 2020-06-21 17:35:49
出题人标程,没考虑无解(((
数组记得开大点。
```
#include <iostream>
#include <cstdio>#define maxn 100
using namespace std;int dx[4]={1,-1,0,0},dy[4]={0,0,1,-1};
char a[maxn][maxn];
bool vis[maxn][maxn];
int n,m;
int step,l,r;struct node
{
int x,y,step;
}c[maxn * maxn];void s()
{
int newx,newy,newstep;
int x,y;
r=1;
l=1;
c[r].x=1;c[l].y=1;c[1].step=1;
while(r<=l)
{
newx=c[r].x;newy=c[r].y;newstep=c[r].step;
for(int i=0;i<4;i++)
{
x=newx+dx[i];
y=newy+dy[i];
if(x>0&&x<=n&&y>0&&y<=m&&a[x][y]!='#'&&!vis[x][y])
{
l++;
vis[x][y]=true;
c[l].x=x;c[l].y=y;c[l].step=newstep+1;
if(x==n&&y==m)
{
printf("%d\n",newstep+1);
return ;
}
}
}
r++;
}
}int main()
{
ios::sync_with_stdio(false);
// freopen("5.in","r",stdin);
// freopen("5.out","w",stdout);
cin>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
cin>>a[i][j];
s();
return 0;
}
```
- 1
信息
- ID
- 1022
- 难度
- 8
- 分类
- (无)
- 标签
- (无)
- 递交数
- 21
- 已通过
- 5
- 通过率
- 24%
- 上传者