zoukankan      html  css  js  c++  java
  • 递归输出符合条件的组合

    //====================================================================
    // 函数: w.wf_digui()
    //--------------------------------------------------------------------
    // 描述:递归输出符合条件的组合
    //--------------------------------------------------------------------
    // 参数:
    //     value    long      al[]        //用来取组合的数组,如:{1,2,3,4,5,6}
    //     value    string    as          //截止到目前为止,已经组合的数字串, 如:123
    //     value    long      al_start    //从“用来取组合的数组”的第几位开始取,如:为2时,表示从{1,2,3,4,5,6}的2开始
    //     value    long      al_num      //从“用来取组合的数组”中取几个数字,如:为2时,表示从{1,2,3,4,5,6}中取两个数字
    //--------------------------------------------------------------------
    // 返回:  (None)
    //--------------------------------------------------------------------
    //====================================================================
    long ll[], i,j, k
    long ll_deal
    string ls
    //要取的个数为0,则返回
    if al_num = 0 then return
    //从开始为止al_start开始循环直到“用来取组合的数组”的最后一个数字
    for j = al_start to upperbound(al)
        //在循环中取1个数字,并将该数字添加到“已经组合的数字串”的后面
        ls = as + string(al[j])
        if al_num = 1 then //如果本次只需要再取1个数字,则取数字完毕,输出结果(il_count仅用于统计输出的数目,可以不要)
            il_count ++
            if mle_1.text <> '' then mle_1.text += '~r~n'
            mle_1.text += string(il_count) + '~t:' + ls
        else //如果本次需要取的数字超过1个,则在取得1个数字后,将取数起始位置 + 1,取数个数 -1, 然后递归往下取
            
    //j已经循环到底了,这时候还没达到规定的个数,则返回,表示取不了了
            if j = upperbound(al)  then exit
            wf_digui( al, ls, j + 1, al_num - 1)
        end if
    next

     

     

    调用方法如下:

    il_count = 0
    //参数1:{1,2,3,4,5,6}为“用来取组合的数组”
    //参数2:取出来的数字串的前缀
    //参数3:从“用来取组合的数组”的第N个数字开始取
    //参数4:需要取几个数字
    wf_digui({1,2,3,4,5,6}, '', 1, 3)
  • 相关阅读:
    在位图上写字
    删除文件到回收站中
    Blog改名字了
    [C#]强类型
    [C#] 如何选择一个目录
    [.NET]Visual Studio 2003的一个bug
    PHP句法规则详解
    php获取本地实际IP
    从0开始学编程(1)115 大致了解
    httpd2.2.21 + php5.3.8 自动安装脚本
  • 原文地址:https://www.cnblogs.com/axon/p/13707777.html
Copyright © 2011-2022 走看看