1. 程式人生 > >被一道演算法題所點化=>(0-9 a-z A-Z 四位全排列總數){..

被一道演算法題所點化=>(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()); } }