目录:

  • 代码:
  • 分析:
  • 汇编:

代码:

#include <stdio.h>/*程序描述:输出字符串所有的组合情况使用permutation函数进行将指定的下标值,与最大下标值这个范围的每个下标值进行交换每调用一次permutation函数表示只处理指定下标的值,每次指定位置交换后,再调用b+1进行后面一个位置的交换,直到要交换的位置的与最大下标值相等时,表示没得交换了输出该字符串,这次的函数出栈返回调用处(就是处理前一个字符的地方),将前一个位置的字符恢复回没交换的状态,再将前一个字符与后面字符交换,如果还可以交换就再次调用permutatuion函数处理后面的字符,要是不可以处理该位置的permutation函数就出栈,返回再前一个位置再进行同样操作总结:先从第一个字符处理,然后再每个字符调用permutation函数进栈,然后从倒数第二个开始与后面的交换没得交换后,处理倒数第三个,再回去处理倒数第二个。可以交换就交换,不行就返回处理交换前一个再回去处理交换后面的。
*//*
调换字符函数 (输出所有排列组合)
第一个参数:处理的字符串
第二个参数:要交换的下标在字符串中
第三个参数:可以交换最大值下标(字符串最后一个字符下标)
*/
void permutation(char s[], int b, int e)
{if( (0 <= b) && (b <= e) ){if( b == e )//如果调换的位置与最后一个字符位置相等时输出字符串{printf("%s\n", s);}else{int i = 0;//用于与当前位置(b)做交换的位置for(i=b; i<=e; i++)//循环将当前位置与后面的每个位置的数据交换(包括自己本身){char c = s[b];//取当前位置的值s[b] = s[i];//将要交换的值赋给当前位置s[i] = c;//将当前位置值赋给交换的位置permutation(s, b+1, e);//将当前位置的下一个位置调用调换字符函数进行下个位置的交换c = s[b];//将上面当前位置交换后,再交换回来s[b] = s[i];s[i] = c;}}}
}int main()
{char s[] = "abc";permutation(s, 0, 2);getchar();return 0;
}

分析:











汇编:



递归-输出字符串所有的组合情况(代码、分析、汇编)相关推荐

  1. 优达学城-神经网络之预测共享单车使用情况 代码分析

    优达学城-神经网络之预测共享单车使用情况 代码分析 标签(): 机器学习 代码来自于优达学城深度学习纳米学位课程的第一个项目 https://cn.udacity.com/course/deep-le ...

  2. MTI-G-710/GNSS组合导航代码分析

    这里写自定义目录标题 前言 代码分析 主函数 sinsgps核心函数 IMU参数辨识 结果分析 1.原始数据分析 2.陀螺仪零偏估计 3.加速度计零偏估计 4.自适应卡尔曼滤波 5.组合导航下的方位角 ...

  3. mpu6500-gnss组合导航代码分析

    文章目录 前言 代码分析 调参 P矩阵 陀螺仪偏置P矩阵 加速度计偏置P矩阵 前言 导航数据为如下链接,数据集使用了低成本Mems器件MPU6500和GNSS做组合导航.代码运行需要严老师psins2 ...

  4. 算法1(输出字符串的所有组合形式,例如 string s=abc 输出所有形式 a,b,c,ab,bc,abc 可以与顺序无关)...

    如题 方法 private void Sub(string s,int t) {for (int i = 0; i < s.Length; i++) {if (i<=s.Length-t) ...

  5. pinyin4j把中文句子(含有多音字字母)转成拼音(二维数组递归求所有组合情况返回list)算法实现!...

    介绍 Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换.拼音输出格式可以定制,然而真正的把含有多音字.数字.字母的中文句子转成拼音得到所有的组合情况却有很大难度,我看过很多有关博客 ...

  6. pinyin4j把中文句子(含有多音字字母)转成拼音(二维数组递归求所有组合情况返回list)算法实现!

    介绍 Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换.拼音输出格式可以定制,然而真正的把含有多音字.数字.字母的中文句子转成拼音得到所有的组合情况却有很大难度,我看过很多有关博客 ...

  7. 用最少的变量实现矩阵链乘算法的构想及其递归输出结果c++代码

    1.问题描述 给定n个矩阵构成的一个链<A1,A2,A3,-An>,其中i=1,2,-n,矩阵A的维数为pi-1pi,对乘积 A1A2-An 以一种最小化标量乘法次数的方式进行加全部括号. ...

  8. java练习: 编程列出一个字符串的全字符组合情况,原始字符串中没有重复字符,例如:

    import java.util.ArrayList; import java.util.Scanner;/*** 7. 编程列出一个字符串的全字符组合情况,原始字符串中没有重复字符,例如:* 原始字 ...

  9. 【蓝桥java】递归基础之反向输出字符串

    题目:输入一个字符串,要求将该字符串反向输出 代码实现: package xn.zzunit.recurrence;/*** 递归方法反向输出字符串* @author tyrantForever**/ ...

最新文章

  1. Git 2.17改进了移动代码差异比较和对象搜索
  2. 口算练习题(洛谷P1957题题解,Java语言描述)
  3. 基于JAVA+Servlet+JSP+MYSQL的学生卡消费统计管理系统
  4. Centos6.6安装Nginx
  5. esxi忘记密码重置方法
  6. oracle怎样查询能利用索引,oracle怎样查询索引的使用情况
  7. 计算机控制器的简写,工业控制常用英语及缩写
  8. 安卓h5 ajax上传图片,移动端通过ajax上传图片(文件)并在前台展示——通过H5的FormData对象...
  9. html audio解决浏览器无法播放问题
  10. dhtmlxGantt standard vs dhtmlxGantt pro
  11. 解决:本地计算机无法复制文件到远程计算机
  12. linux-mount-iso
  13. 漂亮的网络验证php源码,好用的冰心php网络验证和源码例子
  14. 抽屉新热榜html源码,利用scrapy获取抽屉新热榜的标题和内容以及新闻地址保存到本地...
  15. 辐射76服务器位置,辐射76快速升级位置分享 前中期哪些位置好升级
  16. MyEclipse 10.5下载地址及破解方法
  17. 【奥斯卡理财星体系 第五章】丨手把手教你从零开始搭建资产配置
  18. html页面怎样打印二分之一,打印二分之一a4纸 大小的纸张 Word该如何设置?
  19. React 热区组件
  20. [CF1616H]Keep XOR Low / [CF_GYM102331B]Bitwise Xor

热门文章

  1. HTML5 Inline SVG
  2. 简化软件操作,提升用户体验
  3. JavaScript高级特征之面向对象笔记
  4. vue2+node+mysql demo总结
  5. BZOJ1734: [Usaco2005 Feb]Aggressive cows 愤怒的牛
  6. MYSQL AND OR的联用
  7. java RSA 加签验签【转】
  8. Oracle使用startup与startup force启动的区别
  9. C语言操作mysql
  10. 人物角色群体攻击判定二(叉乘来判断敌人的位置)