gpt4 book ai didi

c - 使用 C 中的条件按字典顺序对 3 个字符串进行排序

转载 作者:行者123 更新时间:2023-11-30 14:54:47 26 4
gpt4 key购买 nike

我无法从逻辑上全神贯注地做这件事。我已经列出了所有排序的可能性,并以此为基础制定了我的算法。

ABC

ACB

BAC

BCA

CAB

CBA

3 个字符串只有 6 种可能的组合,因此,我认为这是使用条件对其进行硬编码的非常快速且简单的解决方案。查看代码;

  char str1[x]; // where x is some constant value
char str2[x];
char str3[x];
char temp[x];
if (strcmp(str1, str2) > 0)
{
strcpy(temp, str1);
strcpy(str1, str2);
strcpy(str2, temp);
}
else if (strcmp(str2, str3) > 0)
{
strcpy(temp, str2);
strcpy(str2, str3);
strcpy(str3, temp);
}
else if (strcmp(str1, str3) > 0)
{
strcpy(temp, str1);
strcpy(str1, str3);
strcpy(str3, temp);
}

本质上,我想以 ABC 的任何变体为例,并将其排序为 ABC。即 BAC -> ABC,CAB -> ABC。

最佳答案

你们很接近。你最大的问题是那些else。通过使用 else if,您可以确保最多有一个 if block 可以运行,这意味着您可以通过代码采用四种可能的路径 - 第一种 block 运行,或者第二个 block 运行,或者第三个 block 运行,或者它们都不运行。但这不可能是正确的,因为您自己指出有六种情况需要考虑。

其次,您有一个轻微的排序问题,可以通过交换第二个和第三个 block 来解决。

如果您进行这两项更改,您应该会得到一些有效的东西。如果需要,首先将 str1str2 交换,然后在需要时交换 str1str3,这样可以确保最小的值最终位于 str1 中,并且仅两个较高的值保留在 str2str3 中(顺序未知)。然后,如果需要,通过将 str2str3 交换,您可以确保这两者的顺序也正确,因此整个事情必须按顺序进行。

关于c - 使用 C 中的条件按字典顺序对 3 个字符串进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46480668/

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