没有合适的资源?快使用搜索试试~ 我知道了~
php数字游戏 计算24算法
0 下载量 148 浏览量
2020-12-18
20:47:01
上传
评论
收藏 39KB PDF 举报
温馨提示
试读
2页
算法思路:把每一个数字看做一个独立的数学表达式,表达式之间加上标点符号组合成新表达式,一共组合4次,表达式之间的所有组合可以通过递归来实现. 代码如下: 复制代码 代码如下: <?php /** * A 24 maker * @version 1.0.0 * @author laruence<laruence> * @copyright (c) 2009 http://www.laruence.com */ class TwentyFourCal { public $needle = 24; public $precision = ‘1e-6’; functio
资源详情
资源评论
资源推荐
php数字游戏数字游戏 计算计算24算法算法
算法思路:把每一个数字看做一个独立的数学表达式,表达式之间加上标点符号组合成新表达式,一共组合4次,表达式之间
的所有组合可以通过递归来实现.
代码如下:
复制代码 代码如下:
<?php
/**
* A 24 maker
* @version 1.0.0
* @author laruence<laruence at yahoo.com.cn>
* @copyright (c) 2009 http://www.laruence.com
*/
class TwentyFourCal {
public $needle = 24;
public $precision = ‘1e-6’;
function TwentyFourCal() {
}
private function notice($mesg) {
var_dump($mesg);
}
/**
* 取得用户输入方法
*/
public function calculate($operants = array()) {
try {
$this->search($operants, 4);
} catch (Exception $e) {
$this->notice($e->getMessage());
return;
}
$this->notice(‘can\’t compute!’);
return;
}
/**
* 求24点算法PHP实现
*/
private function search($expressions, $level) {
if ($level == 1) {
$result = ‘return ‘ . $expressions[0] . ‘;’;
if ( abs(eval($result) – $this->needle) <= $this->precision) {
throw new Exception($expressions[0]);
}
}
for ($i=0;$i<$level;$i++) {
for ($j=$i+1;$j<$level;$j++) {
$expLeft = $expressions[$i];
$expRight = $expressions[$j];
$expressions[$j] = $expressions[$level – 1];
$expressions[$i] = ‘(‘ . $expLeft . ‘ + ‘ . $expRight . ‘)’;
$this->search($expressions, $level – 1);
$expressions[$i] = ‘(‘ . $expLeft . ‘ * ‘ . $expRight . ‘)’;
$this->search($expressions, $level – 1);
$expressions[$i] = ‘(‘ . $expLeft . ‘ – ‘ . $expRight . ‘)’;
$this->search($expressions, $level – 1);
$expressions[$i] = ‘(‘ . $expRight . ‘ – ‘ . $expLeft . ‘)’;
$this->search($expressions, $level – 1);
if ($expLeft != 0) {
$expressions[$i] = ‘(‘ . $expRight . ‘ / ‘ . $expLeft . ‘)’;
$this->search($expressions, $level – 1);
}
if ($expRight != 0) {
$expressions[$i] = ‘(‘ . $expLeft . ‘ / ‘ . $expRight . ‘)’;
$this->search($expressions, $level – 1);
}
$expressions[$i] = $expLeft;
$expressions[$j] = $expRight;
weixin_38590989
- 粉丝: 8
- 资源: 940
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0