易语言资源网 - 做最全的易语言资源下载社区
精易论坛授权登录

任意字母的【排列】【组合】   [复制链接]

    2022-08-11 08:37:07
    进阶教程源码
    易语言资源网
    2304 次浏览
    来源链接

【排列原理】

比如abc的组合类型  abc   acb  bac  bca  cab  cba.

分析: 我们当然可以写三个嵌套的for循环去取,但是如果是abcd的组合呢? 还要修改代码添加一层for。 那如果是n个字母呢? 你又要手动添加多少层for呢?

所以需要一个忽视字母个数的实现。我们知道多层for(每次for里面的处理还类似)那么可以升华成递归调用。这里我们用递归解决。

以abc为例

(第一层递归里)     取a, 给第二层传bc进去(同时告诉第二层,截止第一层字符串组合是a)

          (第二层递归里) 取b,给第三层传c进去(同事告诉第三层,截止第二层字符串组合出的是ab)

                     (第三层递归里) 取c。 发现这一层只有一个c可以取,那么在第二层字符串组合里面加入c,return。 ---->此时完成一种排列组合: abc

(第一层递归里)     取a, 给第二层传bc进去(同时告诉第二层,截止第一层字符串组合是a)

          (第二层递归里) 取c,给第三层传b进去(同事告诉第三层,截止第二层字符串组合出的是ac)

                     (第三层递归里) 取b。 发现这一层只有一个b可以取,那么在第二层字符串组合里面加入b,return。 ---->此时完成一种排列组合: acb

(第一层递归里)     取b, 给第二层传ac进去(同时告诉第二层,截止第一层字符串组合是b)

          (第二层递归里) 取a,给第三层传c进去(同事告诉第三层,截止第二层字符串组合出的是ba)

                     (第三层递归里) 取c。 发现这一层只有一个c可以取,那么在第二层字符串组合里面加入c,return。 ---->此时完成一种排列组合:bac

【组合】效率会低,但够用

image.png



点我下载 (已有 83 次下载)

引用模块





引用支持库


源码文件名 支持库文件名 支持库标识
排列组合数.e 系统核心支持库 5.7 d09f2340818511d396f6aaf844c7e325


[错误报告]   上一篇:时钟轮盘     下一篇:基于Sharp7库,西门子PLC 读写模...