zoukankan      html  css  js  c++  java
  • 使用递归计算数组的排列

    问题描述:

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

    解决方案:

    我们可以通过递归的方式生成数组元素的所有排列:例如生成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]); 
        }

    }

  • 相关阅读:
    记一次在线阅卷系统设计开发总结
    卡座录音经验汇总
    TEAC 6030S 统调
    空白磁带SONY TDK 万胜,3大品牌空白磁带,入门必读
    cnetos 7 mysql 从data还原数据库
    java的BigDecimal比较大小
    nginx配置静态访问txt文件
    小程序筛选
    买分产整合
    开窗函数
  • 原文地址:https://www.cnblogs.com/guojidong/p/2826891.html
Copyright © 2011-2022 走看看