算法练习-- C# DFS 全排列算法
来源:互联网 发布:init 1 ubuntu 编辑:程序博客网 时间:2024/05/16 05:27
void Main(){var r = A(new List<string>(){"a","b","c","d","e","f"});Console.WriteLine(r.Count);Console.WriteLine(r);}//1. loop each element//2. take out first,2nd... element //3. if after_take_out.Length > 1 then recursive//4. get child result then combine into new resultstatic List<string> A(List<string> arr){if(arr.Count <= 1){return arr;}if(arr.Count == 2){return new List<string>(){arr[0]+","+arr[1],arr[1]+","+arr[0]};}var ret = new List<string>();for(var i = 0;i < arr.Count;i ++){var tmp = new List<string>(arr);var takeOut = arr[i];arr.RemoveAt(i);if(arr.Count > 1){var childR = A(arr);var r = GetResult(takeOut, childR);ret.AddRange(r);}}return ret;}//e.g GetResult("a",["b,c","c,b"])//[a,b,c]//[b,a,c]//[b,c,a]//[a,c,b]//[c,a,b]//[c,b,a]static List<string> GetResult(string val, List<string> oldResult){var ret = new List<string>();for(var i = 0;i < oldResult.Count; i++){var r = GetResult(val, oldResult[i]);foreach(var str in r){ret.Add(str);}}return ret;}//e.g. GetResult("a", "b,c,d")//[a,b,c,d]//[b,a,c,d]//[b,c,a,d]//[b,c,d,a]static List<string> GetResult(string val, string old){var newRet = new List<string>();var arr = old.Split(',');for(var i = 0;i <= arr.Length ; i++){var tmp = new List<string>(arr);tmp.Insert(i,val);newRet.Add(string.Join(",",tmp));}return newRet;}
0 0
- 算法练习-- C# DFS 全排列算法
- C# 全排列算法
- c# 全排列算法
- 【算法专题】【搜索】【DFS】枚举全排列
- 啊哈算法DFS应用之全排列
- 算法练习:排列组合之全排列
- 回溯算法----简单练习全排列
- 算法练习----java字符全排列
- [练习] dfs输出全排列
- 算法--全排列、全子集、DFS\BFS问题
- 算法练习 - 字符串的全排列(字典序排列)
- 没事练习一下算法:全排列的递归算法。
- c#全排列 和 组合算法
- 字符串排列-dfs算法
- [算法] 字符串的全排列 [dfs - 递归神技]
- [算法] 带有条件的全排列 [dfs + set]
- 排列与全排列算法
- 全排列算法(c语言实现)acm练习
- OGG常见问题处理
- C语言实现字符串替换
- 顺时针打印矩阵
- iOS 开发学习35 本地化
- .NET Framework version 4.0 SP1
- 算法练习-- C# DFS 全排列算法
- opencv中的HoG cascadede
- NSDate 问题
- BZOJ 1150 CTSC2007 数据备份Backup 堆+贪心
- 去掉H5中number输入框的上下箭头
- python的requests初步使用
- Apache Jakarta 项目介绍
- Universal-Image-Loader加载listView中图片
- 简单理解socket