zoukankan      html  css  js  c++  java
  • 递归求解几类排列组合问题(四、普通选择性组合排列)

    四、普通选择性组合排列

    对于搜索的深度非常深或深度不固定的情况,则无法用枚举的方法来设置循环嵌套的层数,这时能够考虑用递归法来完毕搜索任务。递归是一种经常使用算法,它是搜索的还有一种实现方式。假设在算法设计中採用一个函数或过程直接或间接地调用它自身来解决这个问题的方法,则称该方法为递归算法。递归算法必需要设计好一个或若干个确定的递归终止条件。

    Sample Input 

    5 3  

    1 2 3 4 5  

    Sample Output 

    123 

    124 

    125 

    134 

    135 

    145 

    234 

    235 

    245 

    345  

    #include<stdio.h> 
    const int maxn=10; 
    int totalN,selectM;  
    int mat[maxn];//存储数组
    int num[maxn];//输出数组
    void solve(int startVar,int selectVar)
    { 
        if(selectVar>=selectM)
        {  
            for(int i=0;i<selectM;++i) 
                printf("%d", num[i]);  
            puts(""); 
            return; 
        }  
        for(int i=startVar;i<totalN;++i)
        {  
            num[selectVar]=mat[i]; 
            solve(i+1,selectVar+1); 
        } 
    }  
    int main()
    {  
        while(scanf("%d%d",&totalN, &selectM)!=EOF)
        { 
            for(int i=0;i<totalN;++i) 
                scanf("%d", mat+i); 
            solve(0,0);
        }  
        return 0; 
    } 


  • 相关阅读:
    走进AngularJs(二) ng模板中常用指令的使用方式
    mysql知识汇总
    存储动态数据时,数据库的设计方法
    js判断密码强度
    svg―Raphael.js Library(一)
    常用js代码
    IE6实现图片或背景的圆角效果
    巧用css border
    IE6下的效果
    理解盒模型
  • 原文地址:https://www.cnblogs.com/hrhguanli/p/4499706.html
Copyright © 2011-2022 走看看