千家信息网

如何编写字母全排列快速算法C代码

发表于:2024-12-13 作者:千家信息网编辑
千家信息网最后更新 2024年12月13日,这篇文章给大家介绍如何编写字母全排列快速算法C代码,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。全排列,比如字母ABC,所有排列有A ,AB,AC,ABC,ACB,B,BA,BC
千家信息网最后更新 2024年12月13日如何编写字母全排列快速算法C代码

这篇文章给大家介绍如何编写字母全排列快速算法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代码就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

字符 字母 字符串 位置 代码 算法 内容 更多 帮助 组合 不错 兴趣 原理 小伙 小伙伴 数目 数组 文章 新字 机器 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 山东建筑大学12级网络安全 哈工程网络安全导师 湖南服务器虚拟化迁移虚拟主机 数据挖掘技术在网络安全中的运用 江西一站式软件开发服务价格 石家庄电脑软件开发培训班 技术开发 软件开发 网络安全手抄报 漂亮 很难 access数据库如何加列 计算机网络技术不会拼音可以吗 非计算机专业怎么进入软件开发 erf服务器维修价格清单 服务器定时自动重启 暴雪的服务器放在哪里 分布式数据库英文版 网络技术协会电路 规模大的软件开发哪家好 pdb 蛋白质二级结构数据库 怎么使用数据库测试网速 计算机网络安全 主机安全 红桥区企业网络技术售后服务 考研复试数据库原理及结构 云控软件开发 java软件开发面试大全 服务器系统管理培训机构 超市数据库设计实例 工控网络安全 威努特 数据库模式导航图 杨浦区品牌软件开发代理商 软件开发需求功能文档
0