V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xh3ccc
V2EX  ›  C

如何方便地遍历阶乘输出字符串呢[c/c++]

  •  
  •   xh3ccc · 2019-04-20 14:52:00 +08:00 · 2226 次点击
    这是一个创建于 1805 天前的主题,其中的信息可能已经有所发展或是发生改变。
    简化如下:

    void foo(char chars[], int n);

    传入的字符数组 chars 大小为 n(n>=1, <60),包含了 n 个不同的可打印字符。将 n 个字符按不同顺序拼接并输出,字符串不包含重复字符。

    比如 chars = {'a', 'b', 'c'}; n = 3;
    输出:
    abc
    acb
    bac
    bca
    cab
    cba
    共 6 个。
    可知需输出 n! 个字符串。

    n!倒是好求出来:
    int K = 1;
    for (i = 1; i <= n; i++)
    K *= i;
    smdbh
        1
    smdbh  
       2019-04-20 14:55:37 +08:00   ❤️ 1
    全排列,一般递归吧
    xh3ccc
        2
    xh3ccc  
    OP
       2019-04-20 15:02:11 +08:00
    @smdbh 啊 对 全排列。感谢。实际需求是包含有重复的字符串数组而不是字符数组。但有提供的关键词,方便多了。
    jxf2008
        3
    jxf2008  
       2019-04-20 15:06:07 +08:00
    这不是一个基本的排列组合么。。
    letianqiu
        4
    letianqiu  
       2019-04-20 15:11:44 +08:00
    stl next_permutation,C++基础好好补一补吧
    azh7138m
        5
    azh7138m  
       2019-04-20 15:13:08 +08:00
    xh3ccc
        6
    xh3ccc  
    OP
       2019-04-20 15:42:40 +08:00
    @jxf2008
    @letianqiu
    @azh7138m
    衰,,实际需求是根据任意 SQL 条件查找存在的索引文件,比题目复杂。

    比如表 t 有列 AAA BBB CCC,表 t 可能建立了 1 个或多个单列索引或组合索引(索引名根据组合顺序命名),比如 create index idx_AAA_CCC on t(AAA, CCC), create index idx_CCC_BBB on t(CCC, BBB);

    对 where BBB > 10 And BBB < 100 And CCC IN ('a', 'b', 'c', 'd'); 就要找到索引 idx_CCC_BBB 并使用它。
    azh7138m
        7
    azh7138m  
       2019-04-20 15:55:54 +08:00   ❤️ 1
    列数不多的时候,一个列分配一个 bit 做标志位,就变成了一个简单地数字查找了......
    Mistwave
        8
    Mistwave  
       2019-04-20 15:59:07 +08:00 via iPhone
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2892 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 13:47 · PVG 21:47 · LAX 06:47 · JFK 09:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.