所以我想編寫一個代碼,打印出所有nPr方式下的字符串排列,其中n是字符串長度,r是輸入。它需要一個前綴和字符串,以及一個整數。它是這樣做的,除了每次打印nPn排列而不是nPr排列。我的置換代碼每次打印nPn?
public static void main(String[] args){
String x = "abcd";
permu("", x, 2);
}
public static void permu(String pre, String x, int r){
if(x.length() == 0)
System.out.println(pre.substring(0, r));
else{
for(int i = 0; i < x.length(); i++)
permu(pre + x.charAt(i), x.substring(0, i) + x.substring(i + 1, x.length()), r);
}
}
當r = 2,我想它打印AB,AC,AD,BA,BC,BD,CA,CB,CD,DA,DB,DC。但它打印了所有內容的兩倍。
非常感謝。但我認爲你在數學上不能這樣做,因爲r必須小於或等於n –
這並不能阻止任何人調用'permu(「」,「abcd」,12)'。代碼只是防止不良輸入的一種保護措施。 –