加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 01:35:32 所属栏目:百科 来源:网络整理
导读:如何使用c#查找集合的所有子集?这里设置的是一个句子(字符串).例如: s =“我是nik”;代码是什么? 这里s的子集将是我,我,尼克,我是尼克. 解决方法 这是我写的一个函数,用于查找给定数组中所有不相关的子集. ListT[] CreateSubsetsT(T[] originalArray){ Li
如何使用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));
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读