【发布时间】:2020-02-06 14:19:22
【问题描述】:
我正在尝试解决一个问题:
任务是-
给定一个按字典顺序排序的字符串数组,以严格的字典顺序打印其所有排列。如果两个排列看起来相同,则只打印其中一个。有关示例,请参见下面的“注释”。
完成函数 next_permutation,它按所述顺序生成排列。
例如,正确顺序的六个排列是:
ab bc cd ab cd bc 公元前 ab cd bc cd ab cd ab bc cd bc ab
注意:可能有两个或多个相同的字符串作为s的元素。
例如,s = [ab,ab,bc] 。仅应打印所有元素匹配的排列的一个实例。换句话说, ifs[0] == s1 ,然后打印 s[0] s1 或 s1 s[0] 但不能同时打印。
具有三个离散元素的三元素数组有六个排列,如上所示。在这种情况下,有三对匹配的排列,其中 s[0] = ab 和 s1 = ab 被切换。我们只打印三个明显独特的排列:
ab ab bc ab bc ab bc ab
输入格式
每个测试文件的第一行包含一个整数n,字符串数组s的长度。
接下来的 n 行中的每一行都包含一个字符串 s[i]。
样本输入 0
2 抗体 光盘
样本输出 0
ab 光盘 cd ab
而this 是我写的代码。
但我遇到了分段错误(核心转储)错误
根据我的知识,当我们访问不再存在的东西时会遇到分段错误。但我不认为我会这样做。
谢谢!
【问题讨论】:
-
请将所有内容直接放在您的帖子中
-
请花一些时间阅读(或刷新)how to ask good questions 和 this question checklist。请创建一个minimal reproducible example 以在问题本身中向我们展示。
-
至于您的问题,您是否尝试过在调试器中捕获崩溃?通过使用调试器,您可以在崩溃发生时捕捉到崩溃,并且能够在您的代码中定位它发生的时间和位置。您还可以检查变量并在崩溃位置查看它们的值。
-
是的,分段错误不仅令人烦恼,还可以让您了解到底发生了什么。您可以直接在调试器中捕获它,或者允许核心转储(使用
ulimit -c unlimited或类似方法)并使用调试器检查核心文件。 -
附言。 StackOverflow 问题旨在对以后遇到相同问题的其他人有用。将所有代码放在一个链接中,这可能会腐烂并且无论如何都不能直接看到,这会破坏这一点。
标签: c pointers segmentation-fault