回溯算法:分析1

class Program
{
static void Display(List<int> items)
{
foreach (var v in items)
{
Console.Write(v.ToString()+" ");
}
if (items.Count == 0)
{
Console.Write("null");
}
}
static void PowerSet(int i, List<int> list_A, List<int> list_B)
{
int e = 0;
if (i > list_A.Count)
{
Display(list_B);
Console.WriteLine("");
}
else
{
e = list_A[i - 1];
list_B.Add(e);
PowerSet(i+1,list_A ,list_B);

list_B.RemoveAt(list_B .Count-1);
PowerSet(i+1,list_A ,list_B);
}
}
static void Main(string[] args)
{
List<int> list_A = new List<int> { 1,2,3};
List<int> list_B = new List<int>();
PowerSet(1,list_A,list_B);
Console.ReadLine();
}
}

原文地址:https://www.cnblogs.com/lvfeilong/p/dfsgdf435435.html