被一道算法题所点化=>(0-9 a-z A-Z 四位全排列总数){..

package suanfa;

import org.junit.Test;

import java.util.concurrent.atomic.AtomicInteger;

public class quanpailie {

    public static volatile AtomicInteger id = new AtomicInteger(0);
    public static int kk = 0;

    /**
     * 从a这个数组中获取要排列组合的字符,总共要排列出m个长度的字符串存入out中
     * @param a
     * @param m
     * @param out
     */
    public void  combination_cursion(char[] a, int m, char[] out) {
        int i;
        if (m == 0){//out中已经存储了m个数字

            /*for (i = 0; i < out.length; i++)
                System.out.print(out[i]);*/
           id.incrementAndGet();
           kk++;
            return;
        }
        for (i = a.length; i >= m; i--){//从前向后依次选定一个,动态规划的体现
            out[m - 1] = a[i - 1];//选定一个之后
            combination_cursion(a, m - 1, out);//从前i-1个后选m-1,递归
        }

    }

    @Test
    public void test(){
        String source = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
        char[] output = new char[4];
        combination_cursion(source.toCharArray(),4,output);
        System.out.printf("总共%s种",id.get());
    }


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值