Algorithm 给定一个矩阵,如何确定某些值是否为相邻值?
我有一个矩阵Algorithm 给定一个矩阵,如何确定某些值是否为相邻值?,algorithm,perl,matrix,Algorithm,Perl,Matrix,我有一个矩阵 ([ 1, 2, 3, 4], [ 5, 6, 7, 8], [ 9, 10, 11, 12], [ 13, 14, 3, 16], [ 2, 18, 19, 20]) 和一个搜索字符串。任务是找出搜索字符串中的数字是否是矩阵中沿x和y坐标彼此相邻的值 “2,7,12,16”应返回true “2,4,7,12”应返回true “1,6,8,12”应返回false “1,5,14,15”应返回false 我不确定你在算法中考虑了什么邻居。矩阵是否
([ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12],
[ 13, 14, 3, 16],
[ 2, 18, 19, 20])
和一个搜索字符串。任务是找出搜索字符串中的数字是否是矩阵中沿x和y坐标彼此相邻的值
应返回true“2,7,12,16”
应返回true“2,4,7,12”
应返回false“1,6,8,12”
应返回false“1,5,14,15”
我不确定你在算法中考虑了什么邻居。矩阵是否被认为是周期性的?在这两种情况下,算法如下所示
起始映射也可以被认为是一个特殊的位置,与所有其他位置相邻,这也简化了后面的算法,因为您不必对搜索字符串中的第一个数字进行特殊处理。请显示您编写的代码,并描述您遇到的问题。我需要perl如何解决上述问题的算法。谢谢,我试过使用A-star寻路,将不匹配的元素转换为零,但仍然。。。。。。需要一个合适的算法来处理这个问题!!你好TimTom,谢谢你的算法,让我来完成脚本;TimTom,如果邻居有多个相同的号码,那么返回的位置将不正确。它是正确的。这就是为什么在第二步中,我们有一个从位置到数字的散列再到位置数组的散列。我甚至在评论中特别指出,如果你没有,你可以做其他的事情。也许你被第3.2步弄糊涂了,那没有一个结果。它是一组当前位置到一组下一个位置。Hi;TimTom,谢谢你的算法,正在工作。
&validateMatrix($number2search,\@matrix);
sub validateMatrix{
my($a,$d) = @_;
my @s = split(",",$a);
my @matrix = @{$d};
???
??
return(true or false)
}