Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:多维数组中的连续区域,用于实现拉丁方_Java_Algorithm_Contiguous_Latin Square - Fatal编程技术网

Java:多维数组中的连续区域,用于实现拉丁方

Java:多维数组中的连续区域,用于实现拉丁方,java,algorithm,contiguous,latin-square,Java,Algorithm,Contiguous,Latin Square,我正在写一个程序,读入一个势函数,告诉它是否是一个有效的拉丁方。现在我正在尝试判断所选区域是否为连续区域 同时读取潜在拉丁方和区域的位置。区域[0,1][0,2][1,1][1,2]将是有效区域,因为它是连续的[0,0][0,2][1,1][1,2]将不连续或无效,因为无法访问[0,0]。如何判断它们是否相邻?解决此问题的合理方法是使用算法 基本上,从区域中的任何点开始,通过标记区域中的所有邻居,然后标记区域中尚未标记的所有邻居,在区域中构建一组与起点相连的位置。当没有新的标记时,您已经找到了包

我正在写一个程序,读入一个势函数,告诉它是否是一个有效的拉丁方。现在我正在尝试判断所选区域是否为连续区域


同时读取潜在拉丁方和区域的位置。区域
[0,1][0,2][1,1][1,2]
将是有效区域,因为它是连续的<代码>[0,0][0,2][1,1][1,2]将不连续或无效,因为无法访问
[0,0]
。如何判断它们是否相邻?

解决此问题的合理方法是使用算法


基本上,从区域中的任何点开始,通过标记区域中的所有邻居,然后标记区域中尚未标记的所有邻居,在区域中构建一组与起点相连的位置。当没有新的标记时,您已经找到了包含起点的最大连续区域。如果不是整个区域,则该区域不是相邻的。

您的问题建议至少对不同的事物进行两次简单检查。如果只想检查每个点是否可以从其他点访问,可以将这些点视为网络中的节点,其中[x,y]链接到[x-1,y]、[x+1,y]、[x,y-1]和[x,y+1]。您可以使用深度优先搜索查找从给定起始节点可访问的所有节点。从任意起始节点执行此类搜索。如果访问所有节点,则所选区域是连续的。我猜这只是来自不同背景的洪水填充


对于拉丁方,任何连续区域都可以,还是需要一个轴对齐的矩形?例如,如果相邻区域只有三个点,可以吗?如果你想检查一个轴对齐的矩形,计算出集合中x和y的最大值和最小值,然后检查每个组合[a,b],其中Xmin连续表示你只增加一个,对吗?是的,北,南,东,或者西部…不是对角线…它必须接触到另一个相邻区域。一个区域可以有超过4个点吗?如果将某个区域指定为点列表,则点是否按特定顺序给出?有7个点的区域有多少个区域形状?