• 第二讲 经典的递归问题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(" ");
        }
        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',''}所以不符合语法规则,数组越界。不可取。

    */
        

  • 相关阅读:
    MySQL安装图解
    程序员感触
    一个人的生活
    开始懂了
    limit 检索记录行
    Ajax的完整兼容各种浏览器版本代码
    java.lang.UnsupportedClassVersionError: Unsupported major.minor version 49.0的错误 [转]
    通信协议
    SDK
    毕业三个多月的感悟
  • 原文地址:https://www.cnblogs.com/startnow/p/5055572.html
Copyright © 2020-2023  润新知