这篇文章给大家介绍如何编写字母全排列快速算法C代码,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
目前创新互联建站已为上千余家的企业提供了网站建设、域名、网络空间、网站改版维护、企业网站设计、岑巩网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。全排列,比如字母ABC,所有排列有A ,AB,AC,ABC,ACB,B,BA,BC,BAC,BCA,C,CA,CB,CAB,CBA。
 //原理是插入, 在一个字符串的所有位置插入新字符.
//原理是插入, 在一个字符串的所有位置插入新字符. //如: AB 插入C , 位置有 1A2B3, 插入后形成 CAB ACB ABC
//如: AB 插入C , 位置有 1A2B3, 插入后形成 CAB ACB ABC
 char *AllList(char *str, int *pNum)
char *AllList(char *str, int *pNum)
 ...{
...{ int i, j, k, n;
    int i, j, k, n; int len = strlen(str);
    int len = strlen(str); int Total = 0;
    int Total = 0; int count, oldcount;
    int count, oldcount; int size;
    int size; char *Buf;
    char *Buf; char *p, *p1;
    char *p, *p1;
 if (len > 10) return NULL;
    if (len > 10) return NULL;
 //计算总的组合数目
    //计算总的组合数目 for (i = 0, j = 1; i  len; i++)
    for (i = 0, j = 1; i  len; i++)
 ...{
    ...{ j *= (len - i);
        j *= (len - i); Total += j;
        Total += j; }
    }
 //创建二维数组, 存放全部组合
    //创建二维数组, 存放全部组合 size = len + 1;
    size = len + 1; if ((Buf = (char *)malloc(Total * size)) == NULL)
    if ((Buf = (char *)malloc(Total * size)) == NULL)
 ...{
    ...{ return NULL;
        return NULL; }
    }
 for (k = 0, count = 0; k  len; k++)  //所有要插入的字符
    for (k = 0, count = 0; k  len; k++)  //所有要插入的字符
 ...{
    ...{ oldcount = count;
        oldcount = count; p = Buf;
        p = Buf; p1 = Buf + count * size;
        p1 = Buf + count * size; for (i = 0; i  oldcount; i++, p += size)  //插入到所有字符串中,形成新的字符串
        for (i = 0; i  oldcount; i++, p += size)  //插入到所有字符串中,形成新的字符串
 ...{
        ...{ n = strlen(p);
            n = strlen(p); for (j = 0; j  n; j++, count++, p1 += size) //在字符串所有位置插入
            for (j = 0; j  n; j++, count++, p1 += size) //在字符串所有位置插入
 ...{
            ...{ memcpy(p1, p, n);
                memcpy(p1, p, n); p1[n] = p1[j];
                p1[n] = p1[j]; p1[j] = str[k];
                p1[j] = str[k]; p1[n + 1] = '
                p1[n + 1] = '
在我的机器上排列10个字母大约0.5秒。
关于如何编写字母全排列快速算法C代码就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
当前题目:如何编写字母全排列快速算法C代码-创新互联
网页链接:http://www.cqwzjz.cn/article/csohsg.html

 建站
建站
 咨询
咨询 售后
售后
 建站咨询
建站咨询 
 