Java文字列配列アルゴリズム
6354 ワード
Java文字列配列アルゴリズム
タイトル:ABCDEの5つのボールの构成の配列の组み合わせは缲り返し抽出することができて最大で16の组み合わせまで何种类の组み合わせの方式がありますか?
例えば、1つのボールを取って構成できる組み合わせはA B C D Eの5種類で、2つのボールを取って構成できる組み合わせは 5+4+3+2+1=15種(BAとABの繰り返し配列を1種とする)
AA AB AC AD AE
BB BC BD BE
CC CD CE
DD DE
EE
3球で構成できる組み合わせは(5+4+3+2+1)+(4+3+2+1)+(3+2+1)+(2+1)+1=35種
AAA AAB AAC AAD AAE
ABB ABC ABD ABE
ACC ACD ACE
ADD ADE
AEE
BBB BBC BBD BBE
BCC BCD BCE
BDD BDE
BEE
CCC CCD CCE
CDD CDE
CEE
DDD DDE
DEE
EEE
プログラムコードの例:
タイトル:ABCDEの5つのボールの构成の配列の组み合わせは缲り返し抽出することができて最大で16の组み合わせまで何种类の组み合わせの方式がありますか?
例えば、1つのボールを取って構成できる組み合わせはA B C D Eの5種類で、2つのボールを取って構成できる組み合わせは 5+4+3+2+1=15種(BAとABの繰り返し配列を1種とする)
AA AB AC AD AE
BB BC BD BE
CC CD CE
DD DE
EE
3球で構成できる組み合わせは(5+4+3+2+1)+(4+3+2+1)+(3+2+1)+(2+1)+1=35種
AAA AAB AAC AAD AAE
ABB ABC ABD ABE
ACC ACD ACE
ADD ADE
AEE
BBB BBC BBD BBE
BCC BCD BCE
BDD BDE
BEE
CCC CCD CCE
CDD CDE
CEE
DDD DDE
DEE
EEE
プログラムコードの例:
1 import java.util.Scanner; 2
3 /**
4 * 。 , , 。 5 */
6 public class Zuhe { 7 private static String str = "ABCDE";//
8 private static int n = 3;//
9 private static int count = 0;//
10
11 public static void main(String[] args) { 12 new Zuhe(); 13 } 14
15 public Zuhe() { 16 Scanner input = new Scanner(System.in); 17 System.out.println(" ( " + str.length() + " )"); 18 n = Integer.parseInt(input.nextLine()); 19 find("", 0); 20 System.out.println(" "+count+" "); 21
22 } 23 /**
24 * , 25 */
26 public static void find(String s, int i) { 27 //
28 String temp = s; 29 //
30 if (s.length() == n) { 31 count++; 32
33 System.out.print(s + " "); 34 if (count % 10 == 0) 35 System.out.println(); 36 return; 37 } 38 // ,
39 for (int k =i; k < str.length(); k++) { 40 s = temp; 41 s += str.charAt(k); 42 find(s, k); 43 } 44 } 45 }