AtCoder Beginner Contest 311 D(dfs/bfs)

问题陈述

有一个�×�N×M方格和一个站在上面的玩家。
让(�,�)(i,j)表示这个网格从上到下第�i行,从左到右第�j列的方格。
该网格的每个方格都是冰或岩石,由长度为 �M的 �N条字符串 �1,�2,…,��S1​,S2​,…,SN​表示,如下所示:

  • 如果 ��Si​的第 �j个字符是 .,则正方形 (�,�)(i,j)为冰;
  • 如果��Si​的�j个字符是 "#",则正方形(�,�)(i,j)是岩石。

这个网格的外围(第11行、第�N行、第11列、第�M列中的所有方格)是岩石。

最初,玩家停留在(2,2)(2,2)方格上,该方格是冰。
棋手可以走以下 0 步或更多步。

  • 首先,指定移动方向:向上、向下、向左或向右。
  • 然后,一直朝这个方向移动,直到玩家撞到一块石头。形式上,继续做以下动作:
    • 如果移动方向的下一个方格是冰,则走到该方格并继续移动;
    • 如果移动方向的下一个方格是岩石,则停留在当前方格并停止移动。

找出玩家可以触碰(通过或停留)的冰方格数。

限制因素

  • 3≤�,�≤2003≤N,M≤200
  • ��Si​是长度为 �M的字符串,由 # 和 .组成。
  • 如果�=1i=1、�=�i=N、�=1j=1或�=�j=M,则正方形(�,�)(i,j)为岩石。
  • 正方形 (2,2)(2,2)是冰。

AtCoder Beginner Contest 311 D(dfs/bfs)_第1张图片

 

 

你可能感兴趣的:(深度优先,宽度优先,算法)