第二讲 经典的递归问题2

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

//n个元素的全排列

#include "stdio.h"

#define N 3

void fun(char ch[], int k){//k: 当前的交换位置(关注点), 与其后的元素交换

    int i;

    char t;

    if(k==N){

        for(i=0; i<N; i++) printf("%c ", ch[i]);

        printf("\n");

    }

    for (i = k; i < N; i++){

        t = ch[k]; ch[k]=ch[i]; ch[i]=t;//试探

        

        fun(ch, k+1);

        

        t = ch[k]; ch[k]=ch[i]; ch[i]=t;//回溯

    }  

}

int main(){

    char ch[N]={‘A‘,‘B‘,‘C‘};

    fun(ch, 0);

    return 0;

}

/*======================

智商有限,想了好久才理清楚。

应该还有更好的办法。

注意ch[3]="ABC"与ch[3]={‘A‘,‘B‘,‘C‘}区别
ch[3]="ABC"等价于ch[3]={‘A‘,‘B‘,‘C‘,‘\0‘}所以不符合语法规则,数组越界。不可取。

*/

   

时间: 2024-10-10 14:09:40

第二讲 经典的递归问题2的相关文章

第一讲 经典的递归问题1

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 //在n个球中,任取m个(不放回),求有多少种取法 #include <stdio.h> int fun(int n, int m) {     if(n<m) return 0;     if(n==m) return 1;     if(m>0)     return fun(n-1, m-1) 

第二十一讲 经典动态图表实现原理

??在制作动态图表之前,首先需要学习如何定义表格区域的名称,方便后面的引用.方法是:公式-定义的名称:定义名称,填写名称和引用位置,引用位置可以使用公式. 2. 表单控件 ??动态图表的实现首先可能用到的工具是表单控件,打开文件-选项:自定义功能区-右侧:主选项卡-勾选开发工具,添加开发工具到Excel选项卡中. ??动态图表可能用到的表单控件有两个:复选框和滚动条,选择开发工具-控件:插入:复选框/滚动条. ??复选框的用法是:定义名称:=IF(复选框要链接的单元格,要选择的数据区域,空白数据

第四课-第二讲04_02_权限及权限管理

第四课-第二讲04_02_权限及权限管理三种权限:rwx三类用户:u:属主g:属组o:其他用户 1.chown:改变文件属主命令(管理员独享命令)chown USERNAME file,file2,file3,.....-R 递归修改,修改目录和目录下文件属主--reference = /path/to/somefile /path/file(主和组一起修改)chown USERNAME:GRPNAME filechown :GRPNAME filechown USERNAME.GRPNAME

通达OA 二次开发培训第二讲

本次是通达OA二次开发第二讲,主要介绍了如何在通达OA中进行程序开发,并将开发程序挂接到OA系统中.

从大数据菜鸟走上大师的历程 第二讲:函数定义,流程控制,异常处理

Scala 第二讲 函数定义,流程控制,异常处理 For 循环  for(左边为单个对象obj  <-  右边为对象集合objs ) for 循环里把右边的对象赋给左边 现在正是学习大数据的最好机遇,不花一分钱就可以成为大数据高手,实现年薪50万的梦想. 王家林的第一个中国梦:免费为全社会培养100万名优秀的大数据从业人员! 如果您有兴趣请点击这个链接进入大数据的学习 http://blog.sina.com.cn/s/blog_8fbd39ee0102vto3.html 如果您确实感觉视频教程

机器学习基石第二讲:learn to answer yes/no

博客已经迁移至Marcovaldo's blog (http://marcovaldong.github.io/) 刚刚完成了机器学习基石的第二讲,主要介绍了机器学习的定义,PLA算法和pocket PLA算法.下面将笔记整理在下面. Perceptron Hypothesis Set 延续前面的信用卡发放问题.银行已有的用户数据可能包括用户的年龄.年薪.工作时长.债务情况等特征信息,我们分别用x1,x2,-,xd来表示,那么对于每一个用户都有一个向量来表示其信息.我们为每一个特征信息分配一个权

16位汇编第六讲汇编指令详解第二讲

16位汇编第六讲汇编指令详解第二讲 1.比较指令 CMP指令 1.CMP指令是将目的操作数减去源操作数,按照定义相应的设置状态标志 2.CMP指令执行的功能与SUB指令(相减指令)一样,但是不同的是CMP指令之根据结果设置标志位 而不修改值 可以操作的指令格式 CMP reg,imm/reg/mem CMP mem,imm/reg 上面是CMP指令的语法,具体的也可以查询帮助文档,inter手册 inter手册查的办法 第一个框代表了CMP指令的所有语法 比如 reg,reg 表示可以比较寄存器

《上古天真论》第二讲文字版

上古天真论篇第二讲 主讲:徐文兵  主持:梁  冬 播出时间:2008-12-20  23:00—24:00     经文:食饮有节,起居有常,不妄作劳,故能形与神俱,而尽其天年,度百岁乃去.今时之人不然也,以酒为浆,以妄为常,醉以入房,以欲竭其精,以耗散其真,不知持满,不时御神,务快其心,逆于生乐,起居无节,故半百而衰也. 梁:辅佐中国文化,发扬光大,大家好我的梁东,在我面前的是我非常尊敬的厚朴中医学堂的堂主徐文兵老师. 徐:梁东好,听众朋友们,大家好! 梁:大家好!我们计划,从新发现中医太美

POI教程之第二讲:创建一个时间格式的单元格,处理不同内容格式的单元格,遍历工作簿的行和列并获取单元格内容,文本提取

第二讲 1.创建一个时间格式的单元格 Workbook wb=new HSSFWorkbook(); // 定义一个新的工作簿 Sheet sheet=wb.createSheet("第一个Sheet页"); // 创建第一个Sheet页 //第一个单元格 Row row=sheet.createRow(0); // 创建一个行 Cell cell=row.createCell(0); // 创建一个单元格 第1列 cell.setCellValue(new Date()); // 给