Advertisement

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)

还没有任何评论哟~