package com.file.read;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Date;import java.util.List;import java.util.Random;public class CharacterCompose {public static SimpleDateFormat formatTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");/**** **/public static void main(String[] args) {char[] chs = { 'a', 'b', 'c', '1', '2', '3', '4', '5', 'd', 'e', 'f','g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r','s', 't', 'u', 'v', 'w', 'x', 'y', 'z', '6', '7', '8', '9' };//// char[] chs = { 'A', 'B', 'C', 'D'};// duplicate(chs) ;// notDuplicate(chs);// int a = 1838265625;// Random r = new Random();// duplicate(chs, r.nextInt(a)+1) ;// long numb = 1;// for(int i = 0; i < 6; i++) {// numb = numb * chs.length;// }// System.out.println("重复:::"+numb);//// a = 1168675200;// r = new Random();// notDuplicate(chs, r.nextInt(a)+1) ;// numb = 1;// for(int i = 0; i < 6; i++) {// numb = numb * (chs.length-i);// }// System.out.println("不重复:::"+numb);// char[] chs = { 'A', 'B', 'C', 'D', 'E', 'F'};//总数int total = 0;//取n个字符int n = 6;/////////////////////////////////////////////////////////////////////////////////////不能重复boolean ifNotSame = true;if(n > 1 && n <= chs.length) {for(int i = 0; i < chs.length; i++) {total = total+loop(0, chs.length, chs, String.valueOf(chs[i]), 1, n-1,ifNotSame);}}String desc = "重复";if(ifNotSame) {desc = "不重复";}System.out.println(chs.length+"取" + n + desc + "的排列组合个数为 " + total);///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////****/total=0;ifNotSame = false;if(n > 1 && n <= chs.length) {for(int i = 0; i < chs.length; i++) {total = total+loop(0, chs.length, chs, String.valueOf(chs[i]), 1, n-1,ifNotSame);}}desc = "重复";if(ifNotSame) {desc = "不重复";}System.out.println(chs.length+"取" + n + desc + "的排列组合个数为 " + total);/////////////////////////////////////////////////////////////////////////////////// }//for循环嵌套递归public static int loop(int start, int end, char[] chs, String msg, int loopIndex, int loopEnd,boolean ifNotSame) {int total = 0;for(int i = start; i < end; i++) {if(loopIndex == loopEnd) {if(ifNotSame && msg.indexOf(String.valueOf(chs[i])) != -1) {continue;}//System.out.println(msg + String.valueOf(chs[i]));total++;} else {if(ifNotSame && msg.indexOf(String.valueOf(chs[i])) != -1) {continue;}String s = msg + String.valueOf(chs[i]);int nextIndex = loopIndex + 1;total = total + loop(start, end, chs, s, nextIndex, loopEnd, ifNotSame);}}return total;}/**重复1838265625*/public static void duplicate(char[] chs, long number) {List<String> list = new ArrayList<String>();long n = 0;for(int a = 0; a < chs.length; a++) {for(int b = 0; b < chs.length; b++) {long time = System.currentTimeMillis();for(int c = 0; c < chs.length; c++) {for(int d = 0; d < chs.length; d++) {for(int e = 0; e < chs.length; e++) {for(int f = 0; f < chs.length; f++) {//String s = String.valueOf(chs[a])+String.valueOf(chs[b])+String.valueOf(chs[c])+String.valueOf(chs[d])+String .valueOf(chs[e])+String.valueOf(chs[f]);//list.add(s);n++;if(number == n) {System.out.println(String.valueOf(chs[a])+String.valueOf(chs[b])+String.valueOf(chs[c])+Strin g.valueOf(chs[d])+String.valueOf(chs[e])+String.valueOf(chs[f]));}}}}}//System.out.println(formatTime.format(new Date()) + " " + String.valueOf(chs[a])+String.valueOf(chs[b]) + " 耗时::::" +(System.currentTimeMillis()-time));}}System.out.println(n);}/**不重复* 1838265625* 1168675200*/public static void notDuplicate(char[] chs, long number) {List<String> list = new ArrayList<String>();long n = 0;for(int a = 0; a < chs.length; a++) {for(int b = 0; b < chs.length; b++) {if(b == a) {continue;}long time = System.currentTimeMillis();for(int c = 0; c < chs.length; c++) {if(c == a || c == b) {continue;}for(int d = 0; d < chs.length; d++) {if(d == c || d == a || d == b) {continue;}for(int e = 0; e < chs.length; e++) {if(e == d || e == c || e == a || e == b) {continue;}for(int f = 0; f < chs.length; f++) {if(f == e || f == d || f == c || f == a || f == b) {continue;}//String s = String.valueOf(chs[a])+String.valueOf(chs[b])+String.valueOf(chs[c])+String.valueOf(chs[d])+String .valueOf(chs[e])+String.valueOf(chs[f]);//System.out.println(s);//list.add(s);n++;if(number == n) {System.out.println(String.valueOf(chs[a])+String.valueOf(chs[b])+String.valueOf(chs[c])+Strin g.valueOf(chs[d])+String.valueOf(chs[e])+String.valueOf(chs[f]));}}}}}//System.out.println(formatTime.format(new Date()) + " " + String.valueOf(chs[a])+String.valueOf(chs[b]) + " 耗时::::" + (System.currentTimeMillis()-time));}}System.out.println(n);}}。