C#语法灵活运用之排列组合算法

作者: gaohailin 分类: 编程技术 发布时间: 2019-04-10 15:41

今天群里有朋友求一个排列组合算法,题目是给定长度,输出所有指定字母的组合。

如指定字母a、b、c、d、e、f,长度为2,则结果应为:aa、ab、ac … ef、ff。

有朋友给出算法,很有特色:

他的解法假定字母组合就是26字母,则看成26进制,非常有创意。

而我则想到,这个问题可以剥离,逐层追加到指定的长度,并且可以批量处理。

于是创造了一个全新的算法:

我的算法是根据指定长度,从一开始,逐层增加元素,每加一次,都是笛卡尔乘积,并且充分利用linq语法的精炼和内部阵列算法的优化,因此我的这个算法非常高效而简洁。

因此记录在此,以备参考

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!

发表评论

电子邮件地址不会被公开。 必填项已用*标注