Hackerrank 机器人拯救公主 为啥很多人3胜得0分,我也如此,欢迎前来探讨

回归 Hackerrank 刷人工智能题,首刷遭到暴击

选了人工智能的第一道题:
在 一个 N * N (N是正奇数,大于等于3,小于100)的矩阵上,
矩阵左上角是坐标 [0,0],左下角是 [N-1,0],右上角是[0,N-1],右下角是 [N-1
,N-1],矩阵方格默认用’-'表示
公主(用字母’p’表示)可能在四角之一,机器人(用字母’m’表示)在中间,机器人可以上下左右移动,请打印出机器人救公主的移动轨迹。如果机器人救出公主,就胜利了。得分是(N*N-移动步数)/ 10。

示例输入(第一行是N,后面每行是N*N矩阵的每行具体内容,这里这个例子,矩阵的大小是3 * 3 ,开局时,公主‘p’在左下角,机器人‘m’在正中间):

3
---
-m-
p--

该例输出(先向下,再向左)

DOWN
LEFT

我提交了好几次,3胜但是得分都是0

很多人也都如此,而且都不太理解为什么?我也还在琢磨。怀疑,很可能还是没有正确理解题意,可能考虑不太周全。

第一次提交假设:公主就在四顶角之一,保持不动,机器人在正中间

也就是公主在
[0,0], [N-1,0] ,[0,N-1],或 [N-1
,N-1] 之一,保持不动,
而机器人在正中间[(N-1)/2,(N-1)/2]
但是提交结果:三胜但0分

第二次提交放宽假设:公主就在四顶角之一,保持不动,机器人在任意非边界位置

因为考虑到机器人所在的 middle 这个词有歧义,也许不是正中间,而是任意非边界位置。
但是提交结果:三胜但0分

第三次提交再放宽假设:公主,机器人开局可以在任意位置,公主保持不动,还允许公主和机器人开局重合

因为考虑到 公主所在的 corner 这个词也有歧义,也许不是四个顶角,而是任意位置
但是提交结果:三胜但0分

每局的得分理论下限是多少呢

假设公主和机器人开局位置随机,公主保持不动,那么,最坏的情况,公主和机器人在对角线的顶角上,所以每个方向需要移动N-1步,两个方向一共需要移动(N-1) * 2 步骤,所以,最差得分是

(N*N - (N-1) * 2/ 10

当N=3时,无论如何,每局只能得0分

因为3*3 < 10,所以,只能得0分

所以来算一下,理论上,3局的最大可能得分

实际上,评论区对于这道题目,舆论哗然,官方也没有解释,也没有公布他们的测试用例。

所以,让我们来估算,在理论上,三局的理论最大可能得分。

让我们假定公主是保持不动的,那么每一局的得分是:

(N*N-移动步数)/ 10

那么,N的最大值是99,在允许初始位置重合的情况下,移动步数最小是0,所以一局的最大可能得分是

99*99-0/ 10 = 980.1

所以,3局最大理论得分是,2940.3

980.1*3=2940.3

实际上,在排行榜上,第一名得了 2922.10 分,接近理论上限,第二名得了 80.50 分,第三名得了 40.30 分,下面梯队得了 27.80 分,而广大其他群众,大部分都是3胜0分。

3胜0分?

大家猜测,可能是因为测试用例只给了N=3的情况。

难道需要推翻公主位置保持不动这个假设?

就是实际的测试用例,可能公主在机器人每走一步之后,位置都是随机的?

这道题你得正分了吗?你怎么看?欢迎讨论!

祝福!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值