C# 获取数组的子集

private static void PrintSubItems(int[] source)

{

    int i = 1;

 

    int total = int.Parse(Math.Pow(2, source.Length).ToString());

    int cur;

 

    int cnt = 1;

    while (i < total)

    {

        Console.Write("Possibility " + cnt + ": ");

        cur = i;

        int idx = 0;

 

        while (cur != 0)

        {

            if ((cur & 1)!=0)

                Console.Write(source[idx] + ", ");

 

            cur >>= 1;

            idx++;

        }

 

        cnt++;

        i++;

 

        Console.Write(" ");

    }

}