求一个组词算法的思路

shootblue 2012-06-21 03:36:32
有一个组词的需求,请大家帮忙看下,要求如下:

给定一组词,每行一个,如:

裤子
牛仔
纯棉
低腰
加肥

用上面的词组成下面的格式

裤子
牛仔
纯棉
低腰
加肥
裤子牛仔
裤子纯棉
裤子低腰
裤子加肥
裤子牛仔纯棉
裤子牛仔低腰
裤子牛仔加肥
裤子牛仔纯棉低腰
裤子牛仔纯棉加肥
裤子牛仔纯棉低腰加肥
牛仔纯棉
牛仔低腰
牛仔加肥
牛仔纯棉低腰
........

这样依次类推一层一层的组词。

求一个这个需求的算法思路。
...全文
218 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
foolbirdflyfirst 2012-06-21
  • 打赏
  • 举报
回复
组合问题,可参考

/**C(M,N) recursive*/
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);
}

shootblue 2012-06-21
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

我建议你将主语和形容词分开, 这和淘宝之类的类别选择是一样的道理:

主语:
裤子
牛仔

形容词:
纯棉
低腰
加肥

先对形容词求得所有组合,然后将每个主语拼接到组合上就行了。
[/Quote]

这个建议不错,谢谢。
qq120848369 2012-06-21
  • 打赏
  • 举报
回复
我建议你将主语和形容词分开, 这和淘宝之类的类别选择是一样的道理:

主语:
裤子
牛仔

形容词:
纯棉
低腰
加肥

先对形容词求得所有组合,然后将每个主语拼接到组合上就行了。
代码如诗 2012-06-21
  • 打赏
  • 举报
回复
排列组合,是你要的结果么?
$arr=array('裤子','牛仔','纯棉','低腰','加肥');
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] => 裤子牛仔纯棉低腰加肥
)

)*/
qq120848369 2012-06-21
  • 打赏
  • 举报
回复
很简单的一个组合问题, 每个词语可选/可不选, 递归跑一下就行了.

21,893

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧