首页 / PHP / 在数组php中找到两点之间的链接路径
在数组php中找到两点之间的链接路径
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了在数组php中找到两点之间的链接路径,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1954字,纯文字阅读大概需要3分钟。
内容图文
![在数组php中找到两点之间的链接路径](/upload/InfoBanner/zyjiaocheng/670/b979722c964643058fe5aafa5ee625b3.jpg)
我想从连接两个点的数组中找到可能的选项.
例如.
$startPoint = 1;
$endPoint = 5;
$points = [[1,2],[2,3],[3,4],[4,5],[5,6],[6,5] [4,3],[1,4] ,[1、3],[1、5],[1、6]];
函数应该返回
$possibleOptions = [[1,5],[[1,4],[4,5]],[[1,6],[6,5]],[[1,2],[2,3] ,[3、4],[4、5]]
添加一个可能的选项限制会很好,例如.如果最多允许3种组合,则该函数将返回
$possibleOptions = [[1,5],[[1,4],[4,5],[[1,6],[6,5]]
因为[[[[1,2],[2,3],[3,4],[4,5]]]总共有4种组合.
我尝试遍历数组并首先找到直接匹配项.如果未找到直接匹配项,我将再次遍历点并创建一个新数组,其中所有以起点为第一个值的点.然后,我检查新数组是否具有最后一个值为端点的元素.但是,我觉得它是重复的代码,可以进行优化,因为我必须重复代码以获取最大数量的组合.只是不确定如何…
这是我的代码示例:
$results = [];
$startPoint = 1;
$endPoint = 3;
$points = [[1, 2], [2, 3], [3, 4], [4, 5], [5, 6], [4, 3], [1, 4], [1, 3]];
foreach ($points as $point) {
if ($point[0] == $startPoint && $point[1] == $endPoint) {
$results[] = $point;
}
}
$newStartPoints = [];
foreach ($points as $point) {
if ($point[0] == $startPoint) {
$newStartPoints[] = $point;
}
}
foreach ($points as $point) {
foreach ($newStartPoints as $startPoint) {
if ($point[0] == $startPoint[1] && $point[1] == $endPoint) {
$results[] = [$startPoint, $point];
}
}
}
print_r($results);
解决方法:
这是一个解决方案:
$startPoint = 1;
$endPoint = 5;
$max_combinations = 3;
$points = [[1, 2], [2, 3], [3, 4], [4, 5], [5, 6], [4, 3], [1, 4], [1, 3], [1, 5]];
$result = [];
for ($i = $startPoint; $i <= $endPoint; $i++) {
$sub_result = [];
if (in_array([$startPoint, $i], $points)) {
$sub_result[] = [$startPoint, $i];
for ($j = $i; $j <= $endPoint; $j++) {
if (in_array([$j, $j + 1], $points) && $j + 1 <= $endPoint) {
$sub_result[] = [$j, $j + 1];
}
}
}
if (count($sub_result) != 0 && (count($sub_result) <= $max_combinations || $max_combinations === -1)) {
$result[] = $sub_result;
}
}
sort($result);
print_r($result);
可以根据需要修改前四个变量声明.
请注意,将$max_combinations设置为-1将意味着它将匹配所有路径,而不是具有限制.
内容总结
以上是互联网集市为您收集整理的在数组php中找到两点之间的链接路径全部内容,希望文章能够帮你解决在数组php中找到两点之间的链接路径所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。