如何使用c#查找集合的所有子集?这里设置的是一个句子(字符串).例如: s =“我是nik”;代码是什么? 这里s的子集将是我,我,尼克,我,我,尼克,我是尼克. 这是我写的一个函数,用于查找给
s =“我是nik”;代码是什么?
这里s的子集将是>我,我,尼克,我,我,尼克,我是尼克.
这是我写的一个函数,用于查找给定数组中所有不相关的子集.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; }
因此给定1,2,3,4,5的整数数组,它将返回List< int []>包含31个子集.
编辑:根据您的更新,您可以使用上面的函数生成所需的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)); }