ImageVerifierCode 换一换
格式:DOC , 页数:5 ,大小:18.51KB ,
资源ID:8452090      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-8452090.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(补充全排列算法C语言实现.doc)为本站会员(精品资料)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

补充全排列算法C语言实现.doc

1、字符串全排列算法 C 语言实现问题描述:输入一个字符串,打印出该字符串中字符的所有排列。输入:123输出:123132213231312321问题分析:现象分析:这种问题,从直观感觉就是用递归方法来实现即:把复杂问题逐渐简单化,进而得出具体代码实现。 (如何发现一个问题可以使用递归方式来解决? 经分析可以发现:M 个数的排列方法与 N(NM)个数的排列方法没有区别,处理方法与数据的个数没有关系。处理方法的一致性,就可以采用递归) 。3 个数(123)排列,第一位 1 不动,剩下两个数(23)的排列,只要相互颠倒一下,就可以出现关于 1 开头的所有排列 123 132把 2 换到第一位,保持不动

2、,剩下的两个数(13)的排列,只要相互颠倒一下,就可以出现关于 2 开头的所有排列 213 231同理,把 3 换到第一位,可得到 312 321扩展:把 3 个数的所有排列,前面加一个 4,就可以得到关于 4 开头的所有的排列412341324213423143124321若把 4 与后续数据中的任意一个数据交换,通过完成对后续三个数的全排列,就可以得到相应的数开头的四数的排列。总结:对 4 个数的排列,可以转换成首位不动,完成对 3 个数的排列对 3 个数的排列,可以转换成首位不动,完成对 2 个数的排列对 2 个数的排列,可以转换成首位不动,完成对 1 个数的排列对于 1 个数,无排列,

3、直接输出结果算法实现说明:对 n 个数的排列,分成两步:(1)首位不动,完成对 n-1 个数的排列,(2)循环将后续其他数换到首位,再次进行 n-1 个数的排列注:排列完成后,最终的串要与原串相同C 语言代码实现: #include #include /将串左移一位,首位存到末尾。void shift( char *s )if ( !s|!s0 ) return ; /security code . null stringchar ch=s0;int i=0;while( s+i )si-1=si ;si-1=ch;/本函数对于一个已排序好的数据进行全排列void permutation(ch

4、ar list, int head ) int i,len;len=strlen(list) ;if ( len-head = 1 ) /后续没有再排列的,则输出排列数据printf( “%sn“, list );elsefor (i = k; ibegin;i- )if ( send = si-1 )return 1;return 0;void permutation(char list, int k) int i,len;len=strlen(list) ;if ( len-k = 1 ) /后续没有再排列的,则输出排列数据printf( “%sn“, list );elsefor (i = k; ilen; i+) if ( !is_dup ( list,i,k ) ) /如果没有重复的,则进行相应的排列 ,否则跳过之,因为:相同的数据当队首,交换没有意义swap(/交换permutation(list, k+1); /后续串排列swap(/恢复 void pailie( char *str )permutation( str, 0 ); /排列算法,从串的第几位开始排列 int main() char str=“1234“;pailie(str);return 0;

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报