Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1630726
  • 博文数量: 1481
  • 博客积分: 26784
  • 博客等级: 上将
  • 技术积分: 17045
  • 用 户 组: 普通用户
  • 注册时间: 2011-07-12 09:22
文章分类

全部博文(1481)

文章存档

2014年(10)

2013年(353)

2012年(700)

2011年(418)

分类: 系统运维

2012-08-01 09:36:38

ignore_user_abort(true);
set_time_limit(0);
$tmp = array();
function getArr($arr='')
{
for ($i = 1; $i <= 9; $i++) {
if ( empty($arr) ) {
$arr[] = $i;
} elseif ( in_array($i, $arr) ) {
continue;
} else {
$arr[] = $i;
}
if ( count($arr) < 9 ) {
getArr($arr);
}
if ( count($arr) < 9 && 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();
$m[] = $arr[0] + $arr[1] + $arr[2];
$m[] = $arr[3] + $arr[4] + $arr[5];
$m[] = $arr[6] + $arr[7] + $arr[8];
$m[] = $arr[0] + $arr[3] + $arr[6];
$m[] = $arr[1] + $arr[4] + $arr[7];
$m[] = $arr[2] + $arr[5] + $arr[8];
$m[] = $arr[0] + $arr[4] + $arr[8];
$m[] = $arr[2] + $arr[4] + $arr[6];
$tmp = array_count_values($m);
foreach ($tmp as $v) {
if ( $v == 8 ) {
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]} {$arr[2]}
{$arr[3]} {$arr[4]} {$arr[5]}
{$arr[6]} {$arr[7]} {$arr[8]}

fs;
}
echo '

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

';
die;
用穷举的方式完成的,8个结果
我的电脑大约要花10.5秒种时间
用递归的方式完成,可以很方便的增加到4阶、5阶……
花了20分种写出来的,如果把不可能条件排除的话应该不用一秒钟就可以完成的
你们最喜欢的智力题

原文地址:

阅读(698) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~