110,534
社区成员
发帖
与我相关
我的任务
分享
static void Main()
{
Permutation(Enumerable.Range(1, 6), new[] { 2, 3, 4, 5 }, Enumerable.Range(3, 5));
}
public static void Permutation(params IEnumerable<int>[] ranges)
{
Permutation(new Stack<int>(), ranges);
}
private static void Permutation(Stack<int> stack, IEnumerable<int>[] ranges)
{
int left = ranges.Length - stack.Count;
if (left == 0)
{
Console.WriteLine(string.Join(",", stack.Select(i => i.ToString()).ToArray()));
}
else
{
foreach(int i in ranges[left - 1])
{
stack.Push(i);
Permutation(stack, ranges);
stack.Pop();
}
}
}