comefrom: <doocs>0403.Frog Jump_1.py
code: def canCross( stones: List[int]) -> bool:
      n = len(stones)
      dp = [[False] * n for i in range(n)]
      dp[0][0] = True
      for i in range(1, n):
          for j in range(i):
              k = stones[i] - stones[j]
              if k > j + 1:
                  continue
              dp[i][k] = dp[j][k - 1] or dp[j][k] or dp[j][k + 1]
              if i == n - 1 and dp[i][k]:
                  return True
      return False
masked: def sample_funcname ( var_0 : List [ int ] ) -> bool :
      var_1 = len ( var_0 )
      var_3 = [ [ False ] * var_1 for var_2 in range ( var_1 ) ]
      var_3 [ 0 ] [ 0 ] = True
      for var_2 in range ( 1 , var_1 ) :
          for var_4 in range ( var_2 ) :
              var_5 = var_0 [ var_2 ] - var_0 [ var_4 ]
              if var_5 > var_4 + 1 :
                  continue
              var_3 [ var_2 ] [ var_5 ] = var_3 [ var_4 ] [ var_5 - 1 ] or var_3 [ var_4 ] [ var_5 ] or var_3 [ var_4 ] [ var_5 + 1 ]
              if var_2 == var_1 - 1 and var_3 [ var_2 ] [ var_5 ] :
                  return True
      return False
  