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

WBOY
Release: 2016-06-06 20:34:48
Original
1890 people have browsed it

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

回复内容:

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

python

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

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>
Copy after login

<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>
Copy after login
Related labels:
php
source:php.cn
Statement of this Website
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
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template