论坛首页 编程语言技术论坛

打印字符串中所有字符的全排列

浏览 3189 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-09-26   最后修改:2009-12-03
给定一字符串为:"ABC"
要能打印出:
ABC
ACB
BAC
BCA
CAB
CBA


#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>

static void arrange(char *s, int start, int end);

int main(int argc, char **argv)
{
    if (argc != 2) {
        printf("usage: ./allrange <string>\n");
        exit(EXIT_FAILURE);
    }

    arrange(argv[1], 0, strlen(argv[1]));

    exit(EXIT_SUCCESS);
}

static void arrange(char *s, int start, int end)
{
    int     i;
    char    tmp;

    if (start == end) {
        printf("%s\n", s);
    } else {
        for (i = start; i < end; i++) {
            tmp = s[start]; s[start] = s[i]; s[i] = tmp;
            arrange(s, start + 1, end);
            tmp = s[start]; s[start] = s[i]; s[i] = tmp;
        }
    }
}

论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics