gpt4 book ai didi

c# - 查找两个数组之间所有可能的值组合

转载 作者:太空狗 更新时间:2023-10-29 22:17:12 28 4
gpt4 key购买 nike

我有两个字符串数组,长度不一定相同,我想从数组中找到两个值之间所有可能的组合“集合”,而不从任何一个数组中重复。
例如,给定数组:
{ "A1", "A2", "A3"
{ "B1", "B2"}
我想要的结果是以下几组:
{ ("A1", "B1"), ("A2", "B2") }
{ ("A1", "B1"), ("A3", "B2")}
{ ("A1", "B2"), ("A2", "B1")}
{ ("A1", "B2"), ("A3", "B1")}
{ ("A2", "B1"), ("A3", "B2")}
{ ("A2", "B2"), ("A3", "B1") }

我的总体方向是创建递归函数,将两个数组作为参数并一次删除每个“选择的”字符串,调用自身直到任一数组为空,但是我有点担心性能问题(我需要在大约 1000 对字符串数组上运行此代码)。
谁能指导我找到一种有效的方法来做到这一点?

最佳答案

将两个数组视为表格的边可能会有所帮助:

        A1      A2      A3
---+-------+-------+-------+
B1 | B1,A1 | B1,A2 | B1,A3 |
---+-------+-------+-------+
B2 | B2,A1 | B2,A2 | B2,A3 |
---+-------+-------+-------+

这意味着一个循环嵌套在另一个循环中,一个循环用于行,另一个循环用于列。这将为您提供初始的一组对:

{B1,A1} {B1,A2} {B1,A3} {B2,A1} {B2,A2} {B2,A3}

然后就是建立初始集合的组合了。您可以使用行和列的成对集合以类似方式可视化组合:

      B1,A1 B1,A2 B1,A3 B2,A1 B2,A2 B2,A3
-----+-----+-----+-----+-----+-----+-----+
B1,A1| | X | X | X | X | X |
-----+-----+-----+-----+-----+-----+-----+
B1,A2| | | X | X | X | X |
-----+-----+-----+-----+-----+-----+-----+
B1,A3| | | | X | X | X |
-----+-----+-----+-----+-----+-----+-----+
B2,A1| | | | | X | X |
-----+-----+-----+-----+-----+-----+-----+
B2,A2| | | | | | X |
-----+-----+-----+-----+-----+-----+-----+
B2,A3| | | | | | |
-----+-----+-----+-----+-----+-----+-----+

同样,这可以通过一对嵌套循环来完成(提示:您的内部循环的范围将由外部循环的值决定)。

关于c# - 查找两个数组之间所有可能的值组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6058868/

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