日期:2014-05-16  浏览次数:20481 次

刚刚遇到一个棘手的算法问题,求解

求解
------解决方案--------------------
$a = array(1,2,2,3,1,2,3,1,1);
$st = array(1 => 0);
$d = 1;
foreach($a as $v) {
  @$st[$v]++;
  if($v >= $d) {
    $d = $v;
  }else{
    while($v < $d) {
      unset($st[$d--]);
    }
  }
  $r[] = join('.', $st);
}
print_r($r); 
Array
(
    [0] => 1
    [1] => 1.1
    [2] => 1.2
    [3] => 1.2.1
    [4] => 2
    [5] => 2.1
    [6] => 2.1.1
    [7] => 3
    [8] => 4
)

------解决方案--------------------
不好意思,没看明白是个啥意思。……。。…。…………。……。。…。……。。…。……。……。………
------解决方案--------------------
$a = array(1,2,2,3,1,2,3,1,1); 表示的是节点所在的层次
$st = array(1 => 0); 存储每层当前的序号
$d 表示当前的层次