Java字串排列演算法

來源:互聯網
上載者:User

Java字串排列演算法

 

  題目:現有ABCDE 5個球 構成的排列組合 可重複抽取 最多取到16個 共有多少種組合方式?

  比如:取1個球可以構成的組合有 A B C D E 共5種,取2個球可以構成的組合有  5+4+3+2+1=15種 (BA 和 AB 這種重複的排列 算成一種)

    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 }

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.