• 使用递归计算数组的排列


    问题描述:

    给定一个整型数组(数组元素各不相同),输出数组元素的所有可能排列。

    解决方案:

    我们可以通过递归的方式生成数组元素的所有排列:例如生成A[4]的排列,我们把A[3]分别指定为A[0],A[1],A[2],A[3],例如制定为A[0]就需要将A[0]和A[3]互换,在每次指定时计算前3个元素的排列,这样问题就减小规模了,当只剩下一个元素时再进行输出,值得注意的一点是:在递归过程中改变了数组的内容,递归结束后必须改回来!

    实现代码:

    //surplus还有多少整数未被递归,n数组总数,A为待排列数组 

    void arrange(int A[],int surplus,int n){

        int i; 
        //只剩下一个元素时直接输出即可 
        if(surplus == 1){ 
            for(i=0;i<n;i++) 
                cout<<A[i]; 
            cout<<endl; 
        } 
        //递归从后向前执行,需要两个标记位置的参数 
        for(i=0;i<surplus;i++){ 
            swap(A[i],A[surplus-1]); 
            arrange(A,surplus-1,n); 
            //交换之前打印数据 
            swap(A[i],A[surplus-1]); 
        }

    }

  • 相关阅读:
    source insight 使用介绍
    android 自定义progressBar
    appium环境安装
    js定义类的三种方法
    对象,函数,构造函数this,原型
    mindjet使用技巧
    在wamp下安装bugfree
    QTP
    powerdesigner使用
    随笔
  • 原文地址:https://www.cnblogs.com/guojidong/p/2826891.html
Copyright © 2020-2023  润新知