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;
}
}
?>
