欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

关于九宫格算法的代码解决方法

程序员文章站 2024-01-18 19:46:04
...
关于九宫格算法的代码
关于九宫格算法的代码解决方法


ignore_user_abort(true);
set_time_limit(0);
$tmp = array();

function getArr($arr='') {
for ($i = 0; $i $arr[] = $i;
if (count($arr) getArr($arr);
}

if ( count($arr) 1 ) {
array_pop($arr);
continue;
} elseif ( count($arr) == 1 ) {
unset($arr);
continue;
} elseif ( checkArr($arr) ) {
$GLOBALS['tmp'][] = $arr;
}
}
}

function checkArr($arr)
{
$m = array();
$val = 4;
if ($val == $arr[0] + $arr[1] - 9){
$m[] = $arr[0] + $arr[1] - 9;
}
if ($val == $arr[2] - $arr[3] * $arr[4]) {
$m[] = $arr[2] - $arr[3] * $arr[4];
}
if ($val == $arr[5] + $arr[6] - $arr[7]) {
$m[] = $arr[5] + $arr[6] - $arr[7];
}
if ($arr[5] != 0) {
if ($val == $arr[0] + $arr[2] / $arr[5]) {
$m[] = $arr[0] + $arr[2] / $arr[5];
}
}
if ($val == $arr[1] - $arr[3] * $arr[6]) {
$m[] = $arr[1] - $arr[3] * $arr[6];
}
if ($val == 9 - $arr[4] - $arr[7]) {
$m[] = 9 - $arr[4] - $arr[7];
}
$tmp = array_count_values($m);
foreach ($tmp as $v) {
if ( $v == 6 ) {
return true;
} else {
return false;
}
}
}
$startTime = microtime(true);
getArr();
$endTime = microtime(true);
for( $i=0; $i$arr = $tmp[$i];
echo $str=
















{$arr[0]} {$arr[1]} 9
{$arr[2]} {$arr[3]} {$arr[4]}
{$arr[5]} {$arr[6]} {$arr[7]}

fs;
}
echo '

共花费时间:';
echo round($endTime - $startTime, 3);
echo '秒

';
die;

仿照网上九宫格穷举代码,结果死循环的,请各位看看。
------解决思路----------------------

set_time_limit(300);
print_r(test());
function test(){
$ret = array();
for($a=0; $a for($b=0; $b for($c=0; $c for($d=0; $d for($e=0; $e for($f=1; $f for($g=0; $g for($h=0; $h if($a+$b-9==4 && $c-$d*$e==4 && $f+$g-$h==4 && $a+$c/$f==4 && $b-$d*$g==4 && 9-$e-$h==4){
return array(
'a' => $a,
'b' => $b,
'c' => $c,
'd' => $d,
'e' => $e,
'f' => $f,
'g' => $g,
'h' => $h
);
}
}
}
}
}
}
}
}
}
return $ret;
}
?>

Array ( [a] => 2 [b] => 11 [c] => 4 [d] => 1 [e] => 0 [f] => 2 [g] => 7 [h] => 5 )

关于九宫格算法的代码解决方法

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

相关文章

相关视频