avatar
y*s
1
input:char[][] matrix, Point[] robots
output: int
给一个矩阵,0代表可以通过,x 代表障碍物,不能通过,r代表机器人,求找出一点
使得所有机器人到该点的sum 最小
0 R 0 0 0
0 0 x R x
x 0 R 0 x.
0 0 0 0 0
最直接的思路就是从一个机器人开始做BFS,算出这个机器人到每一个点的最短距离,
然后把所有机器人到该点的距离相加,得到最短的那个点。但是这样复杂度就很大了,
大概要O(r*m*n),r为机器人个数,m和n为矩阵长宽。
不知道还有什么更好的方法吗?
avatar
y*s
2
自顶,求思路
avatar
f*s
3
感觉是求所有点到所有点的最短距离,可以用bellman ford法。
另外,这个图看起来有点像8皇后,也许可以考虑回溯

【在 y******s 的大作中提到】
: input:char[][] matrix, Point[] robots
: output: int
: 给一个矩阵,0代表可以通过,x 代表障碍物,不能通过,r代表机器人,求找出一点
: 使得所有机器人到该点的sum 最小
: 0 R 0 0 0
: 0 0 x R x
: x 0 R 0 x.
: 0 0 0 0 0
: 最直接的思路就是从一个机器人开始做BFS,算出这个机器人到每一个点的最短距离,
: 然后把所有机器人到该点的距离相加,得到最短的那个点。但是这样复杂度就很大了,

avatar
S*t
4
I don't think either would work well

【在 f*********s 的大作中提到】
: 感觉是求所有点到所有点的最短距离,可以用bellman ford法。
: 另外,这个图看起来有点像8皇后,也许可以考虑回溯

avatar
w*x
5
我有点思路,不知道能不能实现。
当一号机器人遍历的时候,如果到达另外一个机器人(2号),则2号机器人到1号机器
人路径上所有点的距离也就都有了,并且1号通过2号的到达的点到2号的距离也就都有
了。
avatar
k*r
6
don't think there is other better solution.
If the number of r is larger than the one of the empty, to calculate for
each empty position instead can work faster.

【在 y******s 的大作中提到】
: input:char[][] matrix, Point[] robots
: output: int
: 给一个矩阵,0代表可以通过,x 代表障碍物,不能通过,r代表机器人,求找出一点
: 使得所有机器人到该点的sum 最小
: 0 R 0 0 0
: 0 0 x R x
: x 0 R 0 x.
: 0 0 0 0 0
: 最直接的思路就是从一个机器人开始做BFS,算出这个机器人到每一个点的最短距离,
: 然后把所有机器人到该点的距离相加,得到最短的那个点。但是这样复杂度就很大了,

avatar
y*s
7
这是一个好主意,在面试的时候值得提出来,多谢

【在 k****r 的大作中提到】
: don't think there is other better solution.
: If the number of r is larger than the one of the empty, to calculate for
: each empty position instead can work faster.

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。