小编nik*_*uru的帖子

什么算法能够高效地打印字符串的排列?

我知道的算法如下,但为什么我讨厌这种方法,它的时间复杂度是O((n + 1)!)在大字符串的情况下更糟糕

首先对字符串进行排序并将其打印为第一个排列.
现在,我们可以找到下一个排列如下:

让我成为输入[i] <input [i + 1]的最后一个索引.如果没有这样的索引,那么我们就完成了.令j为输入[i] <input [j]的最后一个索引.用输入[j]交换输入[i].通过输入[input.length - 1]反向输入[i + 1].

有没有比上面更好的方法?(如果通过代码解释那么请考虑c或c ++)...只是我期待一个更好的算法,时间复杂度比上面的更少

c c++ algorithm

1
推荐指数
1
解决办法
115
查看次数

这个语句如何工作`int k =(a ++,++ a);`在c或c ++中

我无法理解下面代码的输出是如何"-3"的?

#include <stdio.h>
void main()
{
    int a = -5;
    int k = (a++, ++a);
    printf("%d\n", k);
}
Run Code Online (Sandbox Code Playgroud)

int k = (a++, ++a);在c或c ++中这个陈述背后的概念是什么 ?

c c++ initialization comma comma-operator

0
推荐指数
1
解决办法
2126
查看次数

标签 统计

c ×2

c++ ×2

algorithm ×1

comma ×1

comma-operator ×1

initialization ×1