C#语法灵活运用之排列组合算法
来源:互联网 发布:考勤工资软件 编辑:程序博客网 时间:2024/06/07 13:41
今天群里有朋友求一个排列组合算法,题目是给定长度,输出所有指定字母的组合。
如指定字母a、b、c、d、e、f,长度为2,则结果应为:aa、ab、ac ... ef、ff。
有朋友给出算法,很有特色:
var n = 0; for (int i = 0; i < Math.Pow(26, n); ++i) { int t = i; string str = ""; for (int j = n - 1; j >= 0; --j) { int s = (int)Math.Pow(26, j); str += ((char)('a' + t / s)).ToString(); t %= s; } Console.Write(str + " "); }
他的解法假定字母组合就是26字母,则看成26进制,非常有创意。
而我则想到,这个问题可以剥离,逐层追加到指定的长度,并且可以批量处理。
于是创造了一个全新的算法:
public List<string> GetList(List<string> src, int num) { var res = src; for (int i = 1; i < num; i++) { res = (from s in src from r in res select s + r).ToList(); } return res; }
我的算法是根据指定长度,从一开始,逐层增加元素,每加一次,都是笛卡尔乘积,并且充分利用linq语法的精炼和内部阵列算法的优化,因此我的这个算法非常高效而简洁。
因此记录在此,以备参考
0 0
- C#语法灵活运用之排列组合算法
- C#之DataGridView控件的灵活运用
- C#分割方法灵活运用
- c#排列组合递归算法
- c#排列组合算法
- C#实现排列组合算法
- 排列组合之next_permutation函数的运用
- 网页之定时器的灵活运用
- 表达式求值之栈的灵活运用
- 学习笔记之灵活运用数组下标
- 算法研究之排列组合公式
- 数学和算法之---排列组合
- 浅谈如何灵活运用c#函数操作内存
- c# C(m,n) 排列组合算法
- poj 3662 Telephone Lines spfa算法的灵活运用
- 基础算法之排列组合生成算法
- 基础算法之排列组合生成算法
- 排列组合算法之 字典序排序算法
- Linux Shell编程入门
- openstack的用户(user), 租户(tenant), 角色(role)概念区分
- Unity快速实现回合制游戏
- POJ2104 ---(区间第K 大)
- hello word
- C#语法灵活运用之排列组合算法
- JavaScript Object.prototype.constructor属性详解
- JAVA 反射API
- bzoj 2287(背包dp)
- PyMySQL-在Python 3.x下连接MySQL数据库的方法
- Python 小甲鱼教程 课后练习39
- vs2010安装“LNK1123: 转换到 COFF 期间失败: 文件无效或损坏”解决方法
- iOS应用程序内购/内付费(一)
- android-BluetoothServerSocket