gpt4 book ai didi

c# - 如何获得多个数组的所有组合?

转载 作者:行者123 更新时间:2023-11-30 20:22:31 25 4
gpt4 key购买 nike

编辑:我有一座建筑物,其中有 window 、墙壁、门等。我想通过从门中取出一扇门,从 window 中取出一扇 window 等等来在它们之间进行组合。组合应该包括所有的可能性。我将问题呈现为一组数组,每个数组都有一组元素。现在我想将这些元素组合在一起,条件是每个组合最多包含每个数组的一个元素(数组的数量不受限制,可以是任意数量)。为了澄清问题,我举一个例子:

数组示例:

array1={1,2,3}
array2={a,b,c}
array3={#,$,%}

输出:

1
1,a
1,a,#
1,a,$
1,a,%
1,b
1,b,#
1,b,$
1,b,%
1,c
1,c,#
1,c,$
1,c,%
(for 2 and 3 the same)
a
a,#
a,$
a,%
b
b,#
b,$
b,%
(for c the same)
#
$
%

这意味着在每个组合中,每个数组最多有一个元素。

最佳答案

        var array1 = new[] {1, 2, 3};
var array2 = new[] { "a", "b", "c"};
var array3 = new[] { "#", "$", "%"};
// ----------------------------------

自己做...

        var l1 = array1.Select(i=>i.ToString()).ToList();
var l2 = array2.ToList();
var l3 = array3.ToList();
l1.Add("");
l2.Add("");
l3.Add("");
// ----------------------------------
foreach (var a in l1)
foreach (var b in l2)
foreach (var c in l3)
Console.WriteLine($"{a}{b}{c}");

或者,使用 LINQ

        var result =
from x in l1
from y in l2
from z in l3
select new[] { x, y, z };
foreach (var r in result)
Console.WriteLine($"{r[0]}{r[1]}{r[2]}");

关于c# - 如何获得多个数组的所有组合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39394967/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com