问题描述
在2D网格中,我们从原点(0,0)开始,然后每次可以移动一个像元(x + 1,x-1,y + 1,y-1)。 我必须找到受此约束的最大区域:对于该区域中的任何一点,abs(x)的位数之和加上abs(y)的位数之和最多应为23。
例如,点(59,75)无效,因为5 + 9 + 7 + 5 = 26。 点(-51,-7)有效,因为5 +1 + 7 = 13,小于23。
解决方法
看这张照片。它以白色表示那些从坐标原点可到达的第一象限中数字总和
似乎不难进行广度优先的搜索,例如具有特殊边界条件[System.Collections.ArrayList]$teststringlist=New-Object System.Collections.ArrayList
$teststring ="Test1,Test2,Test3"
$teststringlist = $teststring.Split(",")
$teststringlist=$teststringlist.RemoveAt(0)
(坐标限制为699)的洪水填充并全部计算。
白色填充从原点扩展到达到边界值。此过程类似于第23级的水驱。黑岛留在白海中,坚实的黑色边界限制了它。白色像素计数是原点周围连续区域的面积。
此外,可以根据坐标确定每100x100平方中的白点数量并获得数学公式。
缩放的片段:
Delphi中的原始实现(有有效的非递归Floodfill实现)可提供白色像素计数592597
sumdigit <=23