我想在C#或C++中提取所有可能的数组子集,然后计算所有子集数组各自元素的总和,以检查它们中有多少等于给定数字.
我要找的是算法.我确实理解这里的逻辑,但我现在还没能实现这个.
我有10个字.如何获得5个单词的所有可能组合(n=10, k=5).订单无关紧要.
例如:"A", "B", "C", if k=2 (n=3 in this case),它想要AB,BC和AC.也许你知道一些有用的代码或例子.
PS对不起,如果我不够正确,因为我不太懂英语.
我正在尝试创建一个方法来返回一个集合的所有子集。
例如,如果我有收藏,10,20,30 我想获得以下输出
return new List<List<int>>()
{
new List<int>(){10},
new List<int>(){20},
new List<int>(){30},
new List<int>(){10,20},
new List<int>(){10,30},
new List<int>(){20,30},
//new List<int>(){20,10}, that substet already exists
// new List<int>(){30,20}, that subset already exists
new List<int>(){10,20,30}
};
Run Code Online (Sandbox Code Playgroud)
因为集合也可以是字符串的集合,例如我想创建一个通用方法。这是我根据这个解决方案制定的。
static void Main(string[] args)
{
Foo<int>(new int[] { 10, 20, 30});
}
static List<List<T>> Foo<T>(T[] set)
{
// Init list
List<List<T>> subsets = new List<List<T>>();
// Loop over individual elements
for (int i = 1; i < set.Length; i++)
{
subsets.Add(new …Run Code Online (Sandbox Code Playgroud) 我有一个列表,我需要输出列表的每个子集
例如abcde
会输出到
a
b
c
d
e
ab
ac
ad
ae
abc
abd
abe
bcd
bce
....
abcde
Run Code Online (Sandbox Code Playgroud)
我相信正确的术语是组合,任何元素都不应该在同一行上重复
我打算用一系列循环尝试这个,但我甚至不确定我们是否要开始
有什么建议?
假设我们有'X','Y','Z',我需要的结果将是这样的
(X),(X,Y),(X,Z),(X,Y,Z),(Y),(Y,Z),(Z)
Run Code Online (Sandbox Code Playgroud)
如果我们有'X','Y','Z','J',那么我需要的结果将是这样的
(X), (X,Y),(X,Z),(X,J), (Y), (Y,Z),(Y,J), (Z),(Z,J)
(X,Y,Z), (X,Y,Z,J), (Y,Z,J), (Z,J,X)
Run Code Online (Sandbox Code Playgroud)
我需要什么算法才能完成此任务?
假设我有一个列表:
List<int> _arr = new List<int> {1, 3, 4};
Run Code Online (Sandbox Code Playgroud)
而且是一个目标 4
我想回到{1, 3}作为1 + 3 = 4和{4}作为4 = 4使用LINQ从给定的列表.
我怎么做?