?php

//组词算法

function diyWords($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 = diyWords($arr, ($m-1));

  foreach ($temp_list1 as $s){

    $s = $temp_firstelement.$s;

    $result[] = $s;

  }

  $temp_list2 = diyWords($arr, $m);

  foreach ($temp_list2 as $s){

    $result[] = $s;

  }

  return $result;

}

//组词算法

$arr=array('裤子','牛仔','低腰','加肥');

$count=count($arr);

for($i=1;$i<=$count;$i++){

  $temp[$i]=diyWords($arr,$i);

}

echo '<pre/>';print_r($temp);

运行结果:

Array
(
[1] => Array
(
[0] => 裤子
[1] => 牛仔
[2] => 低腰
[3] => 加肥
)
[2] => Array
(
[0] => 裤子牛仔
[1] => 裤子低腰
[2] => 裤子加肥
[3] => 牛仔低腰
[4] => 牛仔加肥
[5] => 低腰加肥
)
[3] => Array
(
[0] => 裤子牛仔低腰
[1] => 裤子牛仔加肥
[2] => 裤子低腰加肥
[3] => 牛仔低腰加肥
)
[4] => Array
(
[0] => 裤子牛仔低腰加肥
)
)

PHP实现的简单组词算法的更多相关文章

  1. 如何简单解释 MapReduce算法

    原文地址:如何简单解释 MapReduce 算法 在Hackbright做导师期间,我被要求向技术背景有限的学生解释MapReduce算法,于是我想出了一个有趣的例子,用以阐释它是如何工作的. 例子 ...

  2. java实现简单回文算法

    算法要求 编写一个程序,判断一个字符串是否为"回文".回文串:字符串字符从前往后与从后往前一致(中心对称). 算法思路 首先将字符串等分左右两块,然后依次对称比较每一对字符是否相同 ...

  3. 简单的量子算法(二):Simon's Algorithm

    前情回顾: 简单的量子算法(一):Hadamard 变换.Parity Problem 好的,现在开始正版的故事,Simon's Algorithm 问题: 有一个secret string,是n位的 ...

  4. (转)两种高效过滤敏感词算法--DFA算法和AC自动机算法

    原文:https://blog.csdn.net/u013421629/article/details/83178970 一道bat面试题:快速替换10亿条标题中的5万个敏感词,有哪些解决思路? 有十 ...

  5. 一种O(n)时间复杂度的计数排序算法和Top N热词算法

    排序算法是研究非常广泛且超级经典的算法,主流排序算法的时间复杂度基本都在O(nlogn). 今天就介绍一种以hash表为基础的,时间复杂度能够达到O(n)的排序算法--计数排序: 同时基于它的思想,完 ...

  6. 非刚性图像配准 matlab简单示例 demons算法

    2011-05-25 17:21 非刚性图像配准 matlab简单示例 demons算法, % Clean clc; clear all; close all; % Compile the mex f ...

  7. 用python实现一个简单的词云

    对于在windows(Pycharm工具)里实现一个简单的词云还是经过了几步小挫折,跟大家分享下,如果遇到类似问题可以参考: 1. 导入wordcloud包时候报错,当然很明显没有安装此包. 2. 安 ...

  8. 简单的PHP算法题

    简单的PHP算法题 目录 1.只根据n值打印n个0 2.根据n值打印一行 0101010101010101010101…… 3.根据n值实现1 00 111 0000 11111…… 4.根据n值实现 ...

  9. 冒泡排序算法和简单选择排序算法的js实现

    之前已经介绍过冒泡排序算法和简单选择排序算法和原理,现在有Js实现. 冒泡排序算法 let dat=[5, 8, 10, 3, 2, 18, 17, 9]; function bubbleSort(d ...

随机推荐

  1. ping的作用

    Ping是潜水艇人员的专用术语,表示回应的声纳脉冲,在网络中Ping 是一个十分好用的TCP/IP工具.它主要的功能是用来检测网络的连通情况和分析网络速度. Ping有好的善的一面也有恶的一面.先说一 ...

  2. CodeForces786B 线段树 + 最短路

    给定n颗行星,q次处理,地球位置为s,求解在q次处理后,地球到每一颗行星的位置. 其中q有三种不同的操作: 输入v,u,wv,u,w,构建一条从vv到uu的代价为ww的路线 输入u,l,r,wu,l, ...

  3. 博文中标题的样式H1H2H3H4

    设置博文中标题的样式H1 设置博文中标题的样式H2 设置博文中标题的样式H3 设置博文中标题的样式H4 设置博文中标题的样式H5 设置博文中标题的样式H6

  4. 如何用matplotlib绘制决策边界

    import matplotlib.pyplot as plt import numpy as np import sklearn import sklearn.datasets import skl ...

  5. JSON与对象的相互转换

    json是一种轻量级的数据格式,(本质为字符串) 低版本可以使用json2.js插件来解决.下载地址:https://github.com/douglascrockford/JSON-js JSON语 ...

  6. 去除inline-block出现间距的几种方法

    display:inline-block,简单来说就是将对象呈现为inline对象,但是对象的内容作为block对象呈现,之后的内联对象会排列在同一行 比如两个input,默认中间会产生一些间距 &l ...

  7. log4j入门

    日志是应用软件中不可缺少的部分,Apache的开源项目log4j是一个功能强大的日志组件,提供方便的日志记录.在apache网站:jakarta.apache.org/log4j 可以免费下载到Log ...

  8. SQL Server分页进化

    DataReader.Dataset 数据量太大就用datareader,dataset都读到内存里了,datareader是直接读取数据库. DataReader是一个快速的只进游标 DataRea ...

  9. C# 一般处理程序下载文件

    using System; using System.Collections; using System.Data; using System.Linq; using System.Web; usin ...

  10. .net 事务处理

    方法1:直接写入到sql 中在存储过程中使用 BEGIN TRANS, COMMIT TRANS, ROLLBACK TRANS 实现begin transdeclare @orderDetailsE ...