Home >Backend Development >PHP Tutorial >生成长度为4的字符串,字符包括abcdefg,怎么样得到所有的组合?

生成长度为4的字符串,字符包括abcdefg,怎么样得到所有的组合?

WBOY
WBOYOriginal
2016-06-06 20:34:481894browse

把所有的可能存放到一个数组中,程序怎么实现。
可以重复比如aaaa,最好PHP实现的

回复内容:

把所有的可能存放到一个数组中,程序怎么实现。
可以重复比如aaaa,最好PHP实现的

python

<code>import itertools
print list(itertools.permutations(["a","b","c","d","e","f","g"],4))
</code>

php

可以尝试这个:

http://www.honglei.net/?p=167

要考虑aaaa这样的存在吗?其实可以考虑给他们编码,假设abcdefg分别对应0123456,那么所有的情况就是:

0000(也就是0)~6666所有的数啦.

ps:7进制

直接上代码,四个for循环,简单暴力快速

<code><?php $dic = "abcdefg";
    $list =array();//存放所有结果集
    for($i=0;$i<7;$i++)
        for($j=0;$j<7;$j++)
            for($k=0;$k<7;$k++)
                for($l=0;$l<7;$l++){
                    $list[] = $dic[$i].$dic[$j].$dic[$k].$dic[$l];
                }
    print_r($list);

</code></code>

<code>function dfs($pre, $chars, $arr, $lenArr) {
    if(!empty($pre) && in_array(strlen($pre), $lenArr)){ $arr[] = $pre; }
    if(!empty($chars)) {
        foreach ($chars as $char) {
            $tempChars = array();
            foreach ($chars as $c) {
                if ($c !== $char) { $tempChars[] = $c; }
            }
            $arr = $this->dfs($pre.$char, $tempChars, $arr, $lenArr);
        }
    }
    return $arr;
}

function get_combine() {
    $chars = array('a', 'b', 'c', 'd', 'e', 'f', 'g');
    $combineArray = array();
    $combineArray = $this->dfs('', $chars, $combineArray, array(4));
    echo count($combineArray).'<br>';
    var_dump($combineArray);
}</code>
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn