首页 > 代码库 > 排列数据的输出
排列数据的输出
排列组合是高中是学到的 知识,理论上很清楚,但如何使用代码实现,却一直没有尝试过,近段时间由于项目需要,写一个排列的算法,想不到却花费了不少时间。
需求很简单,就是典型的排列应用。
例如输入:C0,C1,C2,C3,C4,输出C0,C1,C2,C3,C4的所有排列。
实现代码:
/// <summary> /// 输出所有排列的数据 /// </summary> /// <param name="columns">输入的排列的所有元素</param> /// <param name="columnsContain">输出元素列表,已添加的元素</param> /// <param name="key"></param> /// <returns></returns> private static string CreateAllSequenceData(List<string> columns, List<string> columnsContain, string key) { StringBuilder strs = new StringBuilder(); List<string> columnsContaininer = new List<string>(); bool hasAddParentcolumns = false;//是否已添加上层循环传入的元素 for (int i = 0; i < columns.Count; i++) { string item = columns[i]; if (!hasAddParentcolumns) { columnsContaininer.AddRange(columnsContain); hasAddParentcolumns = true; } if (columnsContaininer.Count == columns.Count)//所有元素已添加,输出排列 { string value = http://www.mamicode.com/GetSequenceKey(columnsContaininer);>
第二种算法:private static string CreateAllSequenceData2(List<string> columns, List<string> columnsContain, string key) { StringBuilder strs = new StringBuilder(); List<string> columnsContaininer = new List<string>(); List<string> InnerColumns = GetInnerColumns(columns, columnsContain); bool hasAddParentcolumns = false;//是否已添加上层循环传入的元素 for (int i = 0; i < InnerColumns.Count; i++) { string item = InnerColumns[i]; if (!hasAddParentcolumns) { columnsContaininer.AddRange(columnsContain); hasAddParentcolumns = true; } columnsContaininer.Add(item); if (columnsContaininer.Count == columns.Count)//所有元素已添加,输出排列 { string value = http://www.mamicode.com/GetSequenceKey(columnsContaininer);>
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。