字母全排列快速算法C代码

作者:风筝 | 创建时间: 2023-04-09
字母全排列快速算法C代码

操作方法

有很多朋友都不知道字母全排列快速算法C代码的知识,我前几天用到这个知识,就顺便总结了一下,下面达内IT培训为大家分享一下具体内容,希望大家喜欢。全排列,比如字母ABC,所有排列有A ,AB,AC,ABC,ACB,B,BA,BC,BAC,BCA,C,CA,CB,CAB,CBA. //原理是插入, 在一个字符串的所有位置插入新字符.//如: AB 插入C , 位置有 1A2B3, 插入后形成 CAB ACB ABC char *AllList(char *str, int *pNum){    int i, j, k, n;    int len = strlen(str);    int Total = 0;    int count, oldcount;    int size;    char *Buf;    char *p, *p1; if (len > 10) return NULL; //计算总的组合数目    for (i = 0, j = 1; i < len; i++)    {        j *= (len - i);        Total += j;    } //创建二维数组, 存放全部组合    size = len + 1;    if ((Buf = (char *)malloc(Total * size)) == NULL)    {        return NULL;    } for (k = 0, count = 0; k < len; k++)  //所有要插入的字符    {        oldcount = count;        p = Buf;        p1 = Buf + count * size;        for (i = 0; i < oldcount; i++, p += size)  //插入到所有字符串中,形成新的字符串        {            n = strlen(p);            for (j = 0; j <= n; j++, count++, p1 += size) //在字符串所有位置插入            {                memcpy(p1, p, n);                p1[n] = p1[j];                p1[j] = str[k];                p1[n + 1] = ' 以上就是我们为大家总结的有关字母全排列快速算法C代码的相关知识,希望大家能够对大家有所帮助。

点击展开全文

更多推荐