【发布时间】:2013-11-20 19:32:17
【问题描述】:
我需要一个执行以下操作的函数:
作为输入,它需要一个 n×n 棋盘,棋盘上的每个点要么是空的,要么是黑棋,要么是白棋,还有一个位置。
作为输出,它返回给定位置的最长序列的长度。如果位置为空,则返回0。
例如,如果输入了这个板。
BUUUU
WWWB
UUUUU
其中B为黑石,W为白石,U为空点,输入的位置为(1,0),输出为3。
或者如果输入了这个板:
BUUU
WUUU
BUUU
BUUU
并且位置是 0,3 输出将是零,因为位置是空的。如果位置为 3,0,则输出将为 2,因为黑色列。
序列可以是水平的、垂直的或对角的。
这是我目前所拥有的:
如果给我一个位置,我会向上、向下、两侧和两条对角线循环。我一直循环直到我发现序列中断,然后返回最长的序列。例如,如果这是板:
WUU
WWU
WUU
位置是 1,0。我会横向循环,发现最长的水平序列是1,对角循环,找到最长的序列是1,然后垂直循环,找到最长的序列是3,因此返回3。
我怎样才能更快地做到这一点?该函数需要在一秒钟内调用大约 1000 万次。我当前的函数每秒可以执行大约 800 万次。
【问题讨论】:
-
您尝试过什么尝试解决这个问题?
-
“我当前的功能”可能应该发布在问题中,以便我们可以更直接地提供帮助。
-
@mccainz 我在上面解释过。
-
@CoreyOgburn 抱歉,我不能发布我当前的功能。我的描述应该可以很好地了解我的功能是如何工作的。
-
当我问,“你尝试过什么尝试解决这个问题?”我的意思是你解决这个问题的代码在哪里。要求一个完整的解决方案有点不受欢迎,尤其是在没有证明自己努力解决的情况下。
标签: algorithm artificial-intelligence computer-science