簡體   English   中英

組合需要第5個字符串

[英]5th string needed from combination

假設有一個string s=abcd

我想要第5個字符串,包括abcd ,這是adbc 但我也得到了我不需要的所有答案。

那么如何在第5次執行后停止此方法呢?

import java.util.Arrays;
import java.util.Scanner;

class Test{
   long times;
   int n=1;

   public static void main(String[] args) {
        Test tm=new Test();
        Scanner in=new Scanner(System.in);
        int t=Integer.parseInt(in.nextLine());

        while(t!=0){
            String s=in.nextLine();
            char ch[]=s.toCharArray();          
            Arrays.sort(ch);
            String sort=String.valueOf(ch);            
            String ans;
            long n=Long.parseLong(in.nextLine());
            tm.times=n;
            tm.permu("",sort);
            t--;           
        }
    }

    private void permu(String prefix,String str) {
        int len=str.length();          

        if(len==0){
            if(n==times){
                System.out.println(prefix);
            }
            else{
                n++;
            }
        }
        else{
            for(int i=0;i<len;i++){
                permu(prefix + str.charAt(i), str.substring(0, i) + str.substring(i+1, len));
            }
        }      
    }
}

其次是有任何網站,我可以閱讀有關排列,組合和概率的計算和發現排列,組合和概率......對於編碼的東西不是為了數學的東西..我知道如何數學解決但我不能編碼它..無法為它編寫邏輯。

運行檢查並在遞歸中打印結果后,不要更改n 這就是你在adbc之后打印所有內容的原因。

如果您在檢查時使用此代碼:

if (n == times) {
    System.out.println(prefix);
    n = -1;
} else {
    if (n > -1)
        n++;
}

那么你只需要n == times為真,那就是prefixadbc

解決方案的示例測試:

產量

如果要停止一個沒有返回值的方法(方法簽名中的返回類型為void ),則調用return; 將退出該方法......但這里不需要它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM