PHP实现字符串排列组合(递归回溯算法)
发布时间
阅读量:
阅读量
题目
输入一个字符串,按照字典顺序输出该字符串中所有字符的排列组合。例如,当输入字符串为abc时,输出应包括由字符a、b、c所能排列出的所有可能字符串:abc、acb、bac、bca、cab和cba。
输入描述:输入一个字符串,其长度不超过9(可能存在重复字符),字符仅包含大小写字母。
解题思路:采用回溯法的思路:
排列结果的数量是固定的,我们首先确定第一个字符的位置,让字符串中的第一个字符依次与后续各个位置上的字符进行交换,从而得到不同的排列形式。接着,在每个不同的排列基础上,从第二个字符的位置开始,依次与之后的各个位置上的字符进行交换,并递归地执行上述步骤;这一过程将持续到字符串倒数第二个位置(即为递归的终止条件)。
代码:
example.txt 中 输入 :abc
index.php
<?php
/** * 1、递归算法 * 回溯算法
*/
$fd=fopen("example.txt",'r+')
;//$fd = STDIN;
while(fscanf($fd, "%[^\n]", $str)) {
$res = [];//结果
if($str != null && strlen($str)>0){
$arr = st
全部评论 (0)
还没有任何评论哟~
