我今天遇到了一个有趣的问题,我有点想找到一个解决方案。问题是:
机器人可以在网格周围移动。机器人从原点即(0, 0)出发,可以上下左右移动即(x, y+1)、(x, y-1)、(x-1, y)、(x) +1, y) 但有障碍物使机器人移动不安全。要检查一个点在网格上是否安全,取数字 x 的绝对和和数字 y 的绝对和并检查它是否小于或等于 23。即该点是否为 (39, 39) => 3 +9+3+9 是 24 并且该点不安全,或者如果 (-51, 7) => 5+1+7 是 13 那么它是安全的。问题陈述是找出机器人可以访问的区域有多大。
思考过程:
读完这个问题后的主要收获是找到位数小于或等于 23 的笛卡尔坐标,并根据坐标返回区域。现在有很多笛卡尔坐标可以限定为矩形或正方形,但它们都将具有相同的面积。现在我选择从原点制作一个正方形,使得 x==y 以及 x 和 y 的数字总和(即 x)<23,这可能看起来像
i = 0
while True:
units, tens = i%10, (i/10)%10
x = units+tens
y = units+tens
if x + y > 23:
break;
i+=1
但我认为我可能是错的,因为我返回 39 并且 x,y 坐标返回 (12, 12)。然后我必须计算(x,y),(-x,y),(-x,-y)和(x,-y)之间的面积。我认为我的方法是错误的,并且希望任何人对如何找到网格上最大的访问区域的想法

