相关疑难解决方法(0)

生成所有可能的组合

给定2个数组Array1 = {a,b,c...n},Array2 = {10,20,15....x}如何生成所有可能的组合作为字符串a(i)b(j)c(k)n(p) 其中

1 <= i <= 10,  1 <= j <= 20 , 1 <= k <= 15,  .... 1 <= p <= x
Run Code Online (Sandbox Code Playgroud)

如:

a1 b1 c1 .... n1  
a1 b1 c1..... n2  
......  
......  
a10 b20 c15 nx (last combination)
Run Code Online (Sandbox Code Playgroud)

所以在所有组合的总数=元素的产品 array2 = (10 X 20 X 15 X ..X x)

类似于笛卡尔积,其中第二个数组定义第一个数组中每个元素的上限.

固定数字的示例,

    Array x =  [a,b,c]
    Array y =  [3,2,4] 
Run Code Online (Sandbox Code Playgroud)

所以我们将有3*2*4 = 24种组合.结果应该是:

    a1 b1 c1  
    a1 b1 …
Run Code Online (Sandbox Code Playgroud)

c# combinatorics cartesian-product

66
推荐指数
4
解决办法
4万
查看次数

有没有一个很好的LINQ方式来做笛卡尔积?

我有这样的类结构:

Person
Dogs (dog 1, dog 2, etc)
Puppies (puppy A, puppy B, etc)
Run Code Online (Sandbox Code Playgroud)

有一个人.他有1只狗.每只狗有1只小狗.

我想列出所有可能的小狗组合,从每只狗中取一只小狗.例如:

狗1小狗A,狗2小狗狗1小狗A,狗2小狗B狗1小狗B,狗2小狗狗1小狗B,小狗2小狗B

如果它是在sql表中,我会做类似以下的事情来"乘以"表:

select * from puppies a, puppies b where a.parent='dog1' and b.parent='dog2'
Run Code Online (Sandbox Code Playgroud)

是否有一些linq-ish方式来做这种事情???

非常感谢

c# sql linq asp.net cartesian-product

56
推荐指数
3
解决办法
2万
查看次数

标签 统计

c# ×2

cartesian-product ×2

asp.net ×1

combinatorics ×1

linq ×1

sql ×1