这篇文章给大家介绍如何编写字母全排列快速算法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代码就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
新闻名称:如何编写字母全排列快速算法C代码-创新互联
本文URL:https://www.cdcxhl.com/article36/csohsg.html
成都网站建设公司_创新互联,为您提供App设计、软件开发、建站公司、网站营销、云服务器、网站收录
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联