gpt4 book ai didi

c# - 映射两个字符列表以使它们互惠

转载 作者:行者123 更新时间:2023-11-30 17:05:10 31 4
gpt4 key购买 nike

我有一个包含 676 对字母且没有重复的字符串列表:(AA, AB, AC...ZW, ZX, ZZ)

我有第二个包含相同 676 对的字符串列表,但它们现在被打乱:(GH,KI,RT...WE,SD,BB)

我需要将每个元素映射到两个列表中,使它们互惠但不相同(不能有 BB=BB 等)

AA = GH
AB = KI
AC = RT
.
.
GH = AA
.
.
KI = AB
.
.
RT = AC

对于每个字母组(A*、B*、C*...),只有一对映射可以以相同的字母开头。 (例如,您可以有 CD=CH、DH=DE,但不能有 CD=CH、CE=CY...)

我一直在研究如何遍历每个元素(可能打乱第二个列表)并确保它们在两个列表中彼此匹配。关于如何做到这一点的任何想法?谢谢!

最佳答案

1) 只取第一个列表。此外,创建一个包含 26 个条目的 bool 数组,每个条目对应一个字母字符。这将用于指示是否已使用该字符的相同字母对。此外,将字符串映射到字符串。

2) 从列表中随机选择两个元素。

3) 如果它是一个 OK 对(两次不是相同的条目,没有选择我们已经完成的相同字符起始对)将两个方向添加到 map + 如果它是一个相同的字符起始对标记它的字符 bool 数组中的条目。

4) 如果列表现在为空,转到 5)。如果我们已经超过了一个神奇的尝试次数(例如 2000 或 3000)回到 1)并重新开始。否则转到 2)。 (这是因为有时我们可能会以无法解决的结尾结束,例如当我们已经有了 C 起始对而无法添加更多时,只有 C 起始条目)

5) 将映射解释为 string,string 元组的列表,按第一个字符串的字母顺序对其进行排序,并将每个元组解压缩到两个列表中。第一个列表将是列表 A,第二个列表将是列表 B。您将只有完美的倒数,并且任何字母都不会超过一对相同的字母。

关于c# - 映射两个字符列表以使它们互惠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16803675/

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