如何解决节省时间的算法,在有约束的网格中找到最大的区域
在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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。