字母全排列快速算法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语言,C语言实现的快速排序算法的代码
工作期间,将开发过程中经常用到的代码片段记录起来,如下代码段是关于C语言实现的快速排序算法的代码,应该对各朋友也有用处. #include #include while(l--) { } } if ( ...
- python比c语言开发速度快多少倍_Python语言其实很慢,为什么机器学习这种快速算法步骤通常还是用呢?...
原标题:Python语言其实很慢,为什么机器学习这种快速算法步骤通常还是用呢? 作为python的忠实粉丝,看见这个题目就情不自禁想怼回去.鉴于和谐社会,我决定慢慢讲道理. 首先,相对于c语言,pyt ...
- 计算1至1000间的合数c语言,输出1000以内的素数的算法(实例代码)
输出1000以内的素数的算法(实例代码) 代码如下所示: 复制代码 代码如下: #include "stdafx.h" #include #include bool IsSushu ...
- 卷积神经网络算法python实现_自动色彩均衡(ACE)快速算法python实现
自动色彩均衡(ACE)快速算法 ACE算法源自retinex算法,可以调整图像的对比度,实现人眼色彩恒常性和亮度恒常性,通过差分来计算目标点与周围像素点的相对明暗关系来校正最终像素值,有很好的增强效果 ...
- Kylin高级主题-Cube构建算法介绍(逐层算法和快速算法)
Apache Kylin是一个开源的分布式分析引擎,提供Hadoop之上的SQL查询接口及多维分析(OLAP)能力以支持超大规模数据.它能在亚秒内查询巨大的Hive表.本文将详细介绍Apache Ky ...
- c语言快速平方根算法,单片机开平方的快速算法
原标题:单片机开平方的快速算法 吴鉴鹰单片机开发板地址 店铺:[吴鉴鹰的小铺] 地址:[https://item.taobao.com/item.htm?_u=ukgdp5a7629&id=5 ...
- CPD配准算法及代码的简单理解(Coherent Point Drift)
我的毕业设计用到了CPD算法,以及CPD代码工具包,当时刚开始接触CPD时在网上没找到几篇教程或是经验总结的东西.现在毕设做完了,就结合我的理解写一篇文章.可能写的会有点乱,因为我也是一时兴起想要做一 ...
- 快速编写HTML代码常用的方法
在前端开发的过程中,一个最繁琐的工作就是写 HTML.CSS 代码.数量繁多的标签.属性.尖括号.标签闭合等,让前端们甚是苦恼.于是,我向大家推荐 Emmet,它提供了一套非常简单的语法规则,书写起来 ...
- 让你最快速地改善代码质量的 20 条编程规范
根据学习部分极客时间 <设计模式之美>专栏 (王争 前Google工程师)和<阿里 java 规范>整理总结. 分别介绍编码规范的三个部分:命名与注释(Naming and C ...
最新文章
- fetch 跨域请求
- Cassandra 总接归纳
- Linux虚拟机 百度云 监控,使用Shell脚本监控KVM虚拟机
- php lock sh,php文件加锁 lock_sh ,lock_ex
- 继承关系中的拷贝构造函数和赋值操作重载函数分析
- Vue + Element UI + Spring Boot——易班优课YOOC课群在线测试自动答题解决方案(十)问题管理页面
- ubuntu下面supertux2的玩法
- python3中异常处理_python中的五种异常处理机制介绍|python3教程|python入门|python教程...
- usb接口供电不足_主板接口不认识?一分钟带你了解电脑主板接口
- [SHOI2008]小约翰的游戏John
- ubuntu18.04安装ros-melodic
- MFSK以及MFSK和MPSK的对比
- CentOS 7 之Helloworld with c
- 捐一个亿的是加多宝,不是王老吉!只喝加多宝,不喝王老吉!
- 项目工作量估算的专家法
- VB中数组的大小排序解析
- MT4外汇结余净值可用预付款
- 关于SNES9X的编译
- 成功解决error: no match for ‘operator<<’ (operand types are ‘std::basic_ostream<char>’ and ‘Eigen::Quate
- 安装CAJViewer时遇到注册模块出现1904错误解决方法