比如A={1,2,3},那么A的幂集为P(A)={{1,2,3},{1,2},{1,3},{1},{2,3},{2},{3},{空}}
static void Main(string[] args)
{
ArrayList A = new ArrayList();
A.Add("1");
A.Add("2");
A.Add("3");
A.Add("4");
ArrayList B = new ArrayList();
List<ArrayList> C = new List<ArrayList>(); // 结果集
Program p = new Program();
p.GetPowerSet(0, A, B, ref C);
Console.WriteLine(C.Count);
Console.ReadLine();
}
void GetPowerSet(int i, ArrayList A, ArrayList B, ref List<ArrayList> C)
{
if (i == A.Count)
{
C.Add(B);
}
else
{
string x = GetElem(A, i);
int k = GetLength(B);
B.Insert(k, x);
GetPowerSet(i + 1, A, B, ref C);
B.RemoveAt(k);
GetPowerSet(i + 1, A, B, ref C);
}
}
string GetElem(ArrayList A, int i)
{
return A[i].ToString();
}
int GetLength(ArrayList A)
{
int i = 0;
foreach (string a in A)
{
if (a != "0")
{
i++;
}
}
return i;
}