被一道演算法題所點化=>(0-9 a-z A-Z 四位全排列總數){..
阿新 • • 發佈:2019-02-04
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());
}
}