操作方法
有很多朋友都不知道字母全排列快速算法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代码的相关知识,希望大家能够对大家有所帮助。