从品牌网站建设到网络营销策划,从策略到执行的一站式服务
这篇文章给大家介绍如何编写字母全排列快速算法C代码,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
目前创新互联建站已为上千余家的企业提供了网站建设、域名、网络空间、网站改版维护、企业网站设计、岑巩网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。全排列,比如字母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] = '
在我的机器上排列10个字母大约0.5秒。
关于如何编写字母全排列快速算法C代码就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
成都网站建设公司地址:成都市青羊区太升南路288号锦天国际A座10层 建设咨询028-86922220
成都快上网科技有限公司-四川网站建设设计公司 | 蜀ICP备19037934号 Copyright 2020,ALL Rights Reserved cdkjz.cn | 成都网站建设 | © Copyright 2020版权所有.
专家团队为您提供成都网站建设,成都网站设计,成都品牌网站设计,成都营销型网站制作等服务,成都建网站就找快上网! | 成都网站建设哪家好? | 网站建设地图