zoukankan      html  css  js  c++  java
  • 字符串的全排列

    题目:
    输入一个字符串,打印该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a、b、c所能排列出来的所有字符串abc、acb、bac、bca、cab和cba。

    #include <stdio.h>
    #include <string.h>
    
    void my_swap(char *p, char *q) {
        char tmp;
        tmp = *p;
        *p = *q;
        *q = tmp;
    }
    
    char cha[] = {'a', 'b', 'c', 'd', ''};
    char chb[] = {'a', 'b', 'c', 'd',''};
    
    void pf(char* a, char* p, int n) {
        if(n <= 0) return;
        if(n == 1) {
            printf("%s
    ", a);
            return;
        }
        else {
            for(int i = 0; i < n; ++i) {
                my_swap(&p[0], &p[i]);
                pf(a, p+1, n-1);
                my_swap(&p[0], &p[i]);
            }
        }
    }
    
    int main(void)
    {   
    char a2[3] = {'a', 'b', ''};
    //    pf(a2, a2, 2);
        pf(cha, cha, strlen(cha));
        return 0;
    }
    
    
    转载本Blog文章请注明出处,否则,本作者保留追究其法律责任的权利。 本人转载别人或者copy别人的博客内容的部分,会尽量附上原文出处,仅供学习交流之用,如有侵权,联系立删。
  • 相关阅读:
    A Bug's Life(削弱版食物链)
    The Suspects
    Find The Multiple
    Lake Counting(dfs)
    经典dfs(depth-first search)
    喝啤酒(预防老年痴呆的深度搜索)
    C语言的位运算的优势 !
    Oil Deposits
    Catch That Cow
    HTML 003 元素
  • 原文地址:https://www.cnblogs.com/drfxiaoliuzi/p/9699964.html
Copyright © 2011-2022 走看看