【(高职专科组)第十一届蓝桥杯省模拟赛答案】小明每天都要练功,练功中的重要一项是梅花桩。

题目:梅花桩

问题描述
小明每天都要练功,练功中的重要一项是梅花桩。
  小明练功的梅花桩排列成 n 行 m 列,相邻两行的距离为 1,相邻两列的距离也为 1。
  小明站在第 1 行第 1 列上,他要走到第 n 行第 m 列上。小明已经练了一段时间,他现在可以一步移动不超过 d 的距离(直线距离)。
  小明想知道,在不掉下梅花桩的情况下,自己最少要多少步可以移动到目标。

输入格式
  输入的第一行包含两个整数 n, m,分别表示梅花桩的行数和列数。
  第二行包含一个实数 d(最多包含一位小数),表示小明一步可以移动的距离。

输出格式
  输出一个整数,表示小明最少多少步可以到达目标。

样例输入
3 4
1.5

样例输出
3

10评测用例规模与约定
  对于 30% 的评测用例,2 <= n, m <= 20,1 <= d <= 20。
  对于 60% 的评测用例,2 <= n, m <= 100,1 <= d <= 100。
  对于所有评测用例,2 <= n, m <= 1000,1 <= d <= 100。

要点

考虑BFS(广度优先遍历)做法。

将左上角坐标(1,1)入队,并令 d[1][1] 处为0。不断将队头出队,并将与队头坐标 (i,j){(i,j)}(i,j) 距离 dis<d{dis < d}dis<d 的所有坐标入队,并将其坐标对应的 d[x][y] 标记为 d[i][j]+1 ,直到队列为空。
此时,d[n][m] 处即为答案。

代码

posted @ 2020-04-21 23:38  爱做梦的子浩  阅读(493)  评论(0编辑  收藏  举报