有一个组词的需求,请大家帮忙看下,要求如下:给定一组词,每行一个,如:裤子
牛仔
纯棉
低腰
加肥用上面的词组成下面的格式裤子
牛仔
纯棉
低腰
加肥
裤子牛仔
裤子纯棉
裤子低腰
裤子加肥
裤子牛仔纯棉
裤子牛仔低腰
裤子牛仔加肥
裤子牛仔纯棉低腰
裤子牛仔纯棉加肥
裤子牛仔纯棉低腰加肥
牛仔纯棉
牛仔低腰
牛仔加肥
牛仔纯棉低腰
........这样依次类推一层一层的组词。求一个这个需求的算法思路。
牛仔
纯棉
低腰
加肥用上面的词组成下面的格式裤子
牛仔
纯棉
低腰
加肥
裤子牛仔
裤子纯棉
裤子低腰
裤子加肥
裤子牛仔纯棉
裤子牛仔低腰
裤子牛仔加肥
裤子牛仔纯棉低腰
裤子牛仔纯棉加肥
裤子牛仔纯棉低腰加肥
牛仔纯棉
牛仔低腰
牛仔加肥
牛仔纯棉低腰
........这样依次类推一层一层的组词。求一个这个需求的算法思路。
解决方案 »
- 是URL重写还是配置不对
- PHPEXCEL乱码
- Unable to bind to server: Can't contact LDAP server in D:\etim_server\etim_11\we
- mysql_fetch_object的报错问题....学生作业的问题
- 求助:取指定的字符串
- Apache+PHP如何防止流媒体盗链?
- 日期时间转换问题 date() expects parameter 2 to be long
- 关于PHP+SyBase数据库的程序运行环境配置问题(setcookie不能用),
- dreamweaver MX 配置 高分那
- 手动点击城市进行二级域名访问,是不是涉及cookie跨域访问了?
- php递归问题
- 新手求助:使用zend studio时怎么解决代码提示太弱的问题
for($i=1,$count=count($arr);$i<=$count;$i++)
$temp[$i]=getCombinationToString($arr,$i);print_r($temp);
function getCombinationToString($arr,$m){
$result = array();
if ($m ==1)
return $arr; if ($m == count($arr)){
$result[] = implode('' , $arr);
return $result;
}
$temp_firstelement = $arr[0];
unset($arr[0]);
$arr = array_values($arr);
$temp_list1 = getCombinationToString($arr, ($m-1));
foreach ($temp_list1 as $s){
$s = $temp_firstelement.$s;
$result[] = $s;
}
$temp_list2 = getCombinationToString($arr, $m);
foreach ($temp_list2 as $s){
$result[] = $s;
}
return $result;
}/*Array
(
[1] => Array
(
[0] => 裤子
[1] => 牛仔
[2] => 纯棉
[3] => 低腰
[4] => 加肥
) [2] => Array
(
[0] => 裤子牛仔
[1] => 裤子纯棉
[2] => 裤子低腰
[3] => 裤子加肥
[4] => 牛仔纯棉
[5] => 牛仔低腰
[6] => 牛仔加肥
[7] => 纯棉低腰
[8] => 纯棉加肥
[9] => 低腰加肥
) [3] => Array
(
[0] => 裤子牛仔纯棉
[1] => 裤子牛仔低腰
[2] => 裤子牛仔加肥
[3] => 裤子纯棉低腰
[4] => 裤子纯棉加肥
[5] => 裤子低腰加肥
[6] => 牛仔纯棉低腰
[7] => 牛仔纯棉加肥
[8] => 牛仔低腰加肥
[9] => 纯棉低腰加肥
) [4] => Array
(
[0] => 裤子牛仔纯棉低腰
[1] => 裤子牛仔纯棉加肥
[2] => 裤子牛仔低腰加肥
[3] => 裤子纯棉低腰加肥
[4] => 牛仔纯棉低腰加肥
) [5] => Array
(
[0] => 裤子牛仔纯棉低腰加肥
))*/
function C($m,$n)
{
if( $n <= 1) return $m;
$rs = array();
while(count($m))
{
$first = array_shift( $m );
foreach(C($m,$n-1) as $v) $rs[] = $first.$v;
}
return $rs;
}
$array = array('裤子','牛仔','纯棉','低腰','加肥');
while(count($array))
{
for($i = 2,$j = count($array);$i <= $j;$i++)
{
print_r(C($array,$i));
}
array_shift($array);
}