[C#] 全排列解法

输入:nums = [1,2,3]
输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]
示例 2:

输入:nums = [0,1]
输出:[[0,1],[1,0]]
示例 3:

     static void Main(string[] args)     {         permute();     }     /// <summary>     /// 输入一组数字全排列     /// </summary>     private static void permute()     {         int[] nums = [1, 2, 3];         List<int> list = new List<int>();         List<List<int>> lists = new List<List<int>>();         Backtrack(nums, list, lists);         foreach (var choose in lists)         {             Console.WriteLine(string.Join(", ", choose.ToArray()));         }     }     /// <summary>     /// 数字全排列递迴     /// </summary>     /// <param name="nums">输入一组数字清单</param>     /// <param name="tempList">选择暂存清单</param>     /// <param name="lists">最终结果清单</param>     private static void Backtrack(int[] nums, List<int> tempList, List<List<int>> lists)     {         if (nums.Count() == tempList.Count())         {             lists.Add(new List<int>(tempList));         }         else         {             for (int i = 0; i < nums.Length; i++)             {                 //如果选过直接 continue                 if (tempList.Contains(nums[i])) continue;                 tempList.Add(nums[i]);                 Backtrack(nums, tempList, lists);                 //取消之前的选择                 tempList.RemoveAt(tempList.Count - 1);             }         }     }

关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章