zoukankan      html  css  js  c++  java
  • 第二讲 经典的递归问题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',''}所以不符合语法规则,数组越界。不可取。

    */
        

  • 相关阅读:
    软工个人阅读作业3
    阅读作业2
    代码复审
    pair project elevator
    读《移山之道——VSTS软件开发指南》
    软件工程作业--词频统计
    个人阅读作业3
    个人阅读作业2
    代码复审
    结对项目电梯吐血总结
  • 原文地址:https://www.cnblogs.com/startnow/p/5055572.html
Copyright © 2011-2022 走看看