388水桶,3空88满,平分4444 ";print_r($list);echo " ";function dao($a){global $list,$max;$dao=array();$k=1;//可操作的量,前三位for ($i=0; $i 3 ; $i++) { if ($a[$i]==0) {//当前位为0不可操作}else{//当前位可操作的情
";print_r($list);echo ""; function dao($a){ global $list,$max; $dao=array(); $k=1; //可操作的量,前三位 for ($i=0; $i <3 ; $i++) { if ($a[$i]==0) { //当前位为0不可操作 }else{ //当前位可操作的情况下,可被操作的量,全部7位 for ($j=0; $j <7 ; $j++) { if ($i==$j) { //s1.同位不可操作 }else{ //可操作的两种情况↓ //①目标为前三位,可以减的值为被操作位最大值-当前值 if ($j<3) { //可以减的值 $cha=$max[$j]-$a[$j]; //值大于0可以减 if ($cha>0) { if ($cha>$a[$i]) { $cha=$a[$i]; } //下次循环依旧用到a,不可直接操作a $temp=$a; $temp[$i]=$temp[$i]-$cha; $temp[$j]=$temp[$j]+$cha; //操作结果$temp不可为已存在值,排除s3死循环 if (strpos($list,'|'.$temp)===false) { //完成操作,记录,输出,再递归操作 $list=$list.'|'.$temp; //echo $temp.'|'.$i.$j.''; $dao[$k]['value']=$temp; $dao[$k]['child']=dao($temp); $k=$k+1; } } }else{ //②目标为后四位,当前值小于4-后四位值是可以减为0,加到后4位 if ($a[$i]<=$max[$j]-$a[$j]) { $temp=$a; $temp[$j]=$temp[$j]+$temp[$i]; $temp[$i]=0; //操作结果$temp不可为已存在值,排除s3死循环 if (strpos($list,'|'.$temp)===false) { //完成操作,记录,输出,再递归操作 if ($temp=='0004444') { $list=$list.'<>'.$temp; }else{ $list=$list.'|'.$temp; } //echo $temp.'|'.$i.$j.''; if ($temp=='0004444') { $dao[$k]['value']=$temp.'成功!!!!'; }else{ $dao[$k]['value']=$temp; $dao[$k]['child']=dao($temp); $k=$k+1; } } } } } } } } if (is_array($dao)) { return $dao; } } ?>