当前位置 : 主页 > 编程语言 > c语言 >

使用c#查找集合(句子)的所有子集

来源:互联网 收集:自由互联 发布时间:2021-06-25
如何使用c#查找集合的所有子集?这里设置的是一个句子(字符串).例如: s =“我是nik”;代码是什么? 这里s的子集将是我,我,尼克,我,我,尼克,我是尼克. 这是我写的一个函数,用于查找给
如何使用c#查找集合的所有子集?这里设置的是一个句子(字符串).例如:
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));
}
网友评论