列表

详情


NC54293. 等闲变却故人心

描述

        都说人心难测,但Reverie不信邪,偏偏要来测一测。
        现在有一个n行m列的人心迷宫,行数从上到下为1到n,  列数从左到右为1到m, 入口为(1,1),Reverie只能向上下左右四个方向行走,并且不能走出迷宫外
        Reverie想知道,迷宫中的可达的点到入口的最远距离是多少。距离即到达该点所用的最短步数。

输入描述

第一行两个整数数n, m,表示迷宫的行数和列数。
之后n行,每行m个字符,'.'表示该位置可以走,‘*’表示该位置不可以走。
保证点(1,1)可以走。

输出描述

一行内输出一个整数表示答案。

示例1

输入:

3 3
...
.*.
...

输出:

4

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++11(clang++ 3.9) 解法, 执行用时: 90ms, 内存消耗: 2372K, 提交时间: 2019-10-31 15:16:10

#include<iostream>
using namespace std;

int main()
{int i,j,s=0;
  char  a[1000][1000];
  int n,m;
  cin>>n>>m;
  for(int i=0;i<n;i++)
	  for(int j=0;j<m;j++)
		  cin>>a[i][j];
	  i=0;j=0;
	for(i=0,j=0;i<n,j<m;)
	  {if(a[++i][j]=='.') {s++;}
		  else {i=i-1;
	 if(a[i][++j]=='.') s++;
}
	  }
cout<<s<<endl;
return 0;

}

上一题