Here's the function I wrote to find all the unauthorized subsets from a given array.
List<T[]> CreateSubsets<T>(T[] originalArray)
{
List<T[]> subsets = new List<T[]>();
for (int i = 0; i < originalArray.Length; i++)
{
int subsetCount = subsets.Count;
subsets.Add(new T[] { originalArray[i] });
for (int j = 0; j < subsetCount; j++)
{
T[] newSubset = new T[subsets[j].Length + 1];
subsets[j].CopyTo(newSubset, 0);
newSubset[newSubset.Length - 1] = originalArray[i];
subsets.Add(newSubset);
}
}
return subsets;
}
So, given a integer array of 1,2,3,4,5, it will return a List<int[]>containing 31 subsets.
:. 6 , , string.Split('') . :
string originalString = "i am nik";
List<string[]> subsets = CreateSubsets(originalString.Split(' '));
foreach (string[] subset in subsets)
{
Console.WriteLine(string.Join("\t", subset));
}