PHP实现字符的全排列
来源:互联网 发布:全国冷藏车配货app软件 编辑:程序博客网 时间:2024/06/11 20:47
//固定递归的出口,就是只剩一个字符的时候,递归的循环过程,就是从每个子串的第二个字符开始依次与第一个字符交换,然后继续处理子串
public function run($args)
{
@set_time_limit(0);
@ini_set('memory_limit', '2048M');
$str = $args[0];
$res = $this->changeStr($str,0,strlen($str)-1);
var_export($res);
}
public function changeStr($str,$p,$max){
static $result = array();
if($p == $max){
if(!in_array($str,$result)){
echo $str."\n";
$result[] = $str;
}else{
return;
}
}else{
for($i = $p;$i <= $max;$i++){
if($str[$i] != $str[$i+1]){
$str = $this->swap($str,$p,$i);
$this->changeStr($str,$p+1,$max);
$str = $this->swap($str,$p,$i);
}
}
}
return $result;
}
public function swap($str,$curp,$index){
$tmp = $str[$index];
$str[$index] = $str[$curp];
$str[$curp] = $tmp;
return $str;
}
public function run($args)
{
@set_time_limit(0);
@ini_set('memory_limit', '2048M');
$str = $args[0];
$res = $this->changeStr($str,0,strlen($str)-1);
var_export($res);
}
public function changeStr($str,$p,$max){
static $result = array();
if($p == $max){
if(!in_array($str,$result)){
echo $str."\n";
$result[] = $str;
}else{
return;
}
}else{
for($i = $p;$i <= $max;$i++){
if($str[$i] != $str[$i+1]){
$str = $this->swap($str,$p,$i);
$this->changeStr($str,$p+1,$max);
$str = $this->swap($str,$p,$i);
}
}
}
return $result;
}
public function swap($str,$curp,$index){
$tmp = $str[$index];
$str[$index] = $str[$curp];
$str[$curp] = $tmp;
return $str;
}
阅读全文
0 0
- PHP实现字符的全排列
- 字符全排列的另一种实现
- 递归实现的字符全排列
- 字符的全排列
- 字符的全排列
- 字符的全排列
- 字符的全排列
- 全排列算法 - php 实现
- 8.n个字符的全排列(递归实现)
- N个字符全排列的递归实现
- N个字符全排列的非递归实现
- 递归实现n个不同字符的所有全排列
- 采用递归算法实现任意字符的全排列问题
- 全排列的实现
- 全排列的实现
- 全排列的实现
- 全排列的实现
- 全排列的实现
- File类
- Ajax提交表单数据
- event read-- read a event and print it out
- java中的POJO简介
- svn简单操作
- PHP实现字符的全排列
- 配置Maven从Nexus下载构件
- OpenCV 3.1.0 SVM轮廓特征的提取和分类 II
- Linux环境g++编译GDAL动态库
- Java中出现No enclosing instance of type XXX is accessible问题
- C语言 常量、变量
- Hex文件转Bin文件
- POJ 1234 Ball Toss 笔记 未完成
- 排序算法——堆排序(java语言描述)