作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
是否可以在 PHP 中使用级别数组实现 IDDFS 算法?
假设下面的树:
A
/ \
B C
/ \ \
D E F
调用 getNodes(A)
会产生 Array(B, C),同样 getNodes(B)
会产生 Array(D, E)。我已经编写了 getNodes 函数,将其与不幸太慢的 BFS 算法一起使用。
代码格式化表单注释:
function bfs($start,$target){
$dist = 0;
if(empty($queue)){
$queue = array();
};
if(empty($checked)){
$checked = array();
};
array_push($queue, $start);
while(!empty($queue)):
$dist = $dist + 1;
$newqueue = array();
foreach($queue as $node){
if(!in_array($node,$checked)){
array_push($checked,$node);
$nodes=getNodes($node);
if(checkNode($nodes,$target)){
return $dist;
}else{
$newqueue=$nodes;
}
}
$queue = $newqueue;
}
endwhile;
return false;
}
最佳答案
从递归的角度来看,执行此操作的函数可能如下所示:
<?php
function getNode($needle, $target) {
$res = null;
foreach($target as $key=>$val) {
if($key === $needle) {
$res = $target[$key];
break;
}
elseif(is_array($target[$key]))
$res = getNode($needle, $target[$key]);
}
return $res;
}
测试:
$arr = array(
'a' => array(
'b' => array(
'water'
),
'c' => array(
'earth'
)
)
);
var_dump(getNode('a', $arr));
关于php - 数组PHP中的迭代加深深度优先搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7135045/
我目前正在为 Eclipse 使用定制的深色主题,包括 UI 和编辑器。唯一的问题是 Javadoc 和滚动条没有变暗。我不介意有正常的滚动条,我认为这与操作系统主题有关。是否可以更改 Javadoc
我是一名优秀的程序员,十分优秀!