input是一个二维char数组代表一个gym,@是wall,不能通过,是健身器材,其他都是空格,要求找一个空格到所有的距离最短
思路:
建立N个二维数组(N=健身器材的数目),分别保存每一个点到某一个器材位置的大小。最后把他们加起来。取最小的点即为所求。
思路很简单,但是编程实现还真有点麻烦呢。我这里就遇到了个问题是,数组的clone函数。一开始用它,结果总是不对,后来自己挨着复制才解决..貌似clone出来的数组跟原来的数组是等价的,即内存地址相同。
求每个点到某一个器材的位置大小的方法可以是深度优先也可以说是广度优先。直观上广度优先要更合理一些。这里就使用了广度优先的方法。
1 | public class MinDistanceToGym2 { |
2015年12月9日17:48:24