/ /特定の数のすべての組み合わせを取得[重複]-アルゴリズム、並べ替え、組み合わせ

特定の数のすべての組み合わせを取得[複製] - アルゴリズム、ソート、組み合わせ

これは簡単な答えの愚かな質問かもしれませんが、私は私の人生のためにそれを理解することはできません..:p

だから私が変数を持っているなら n = 2 たとえば、以下の数値を組み合わせることができるすべての方法のリストが必要です。 n

の結果 n = 2 それでは:
012
021
102
120
201
210

助けをありがとう:)

回答:

回答№1は1

これは数学の質問ですが、あなたは0-nの順列を計算しようとしています。

順列を計算するには、式nPkを使用します。ここで、kは選択された数であり、 n = k + 1。 nの階乗を取り、それをn --kの階乗で除算します。 ==> n! / (n - k)! あなたの例ではそれは

3!/(3 - 2)!
3!/1!
3 * 2 * 1 / 1 = 6

以下のリンクで詳細を確認できます。 http://www.mathwords.com/p/permutation_formula.htm


回答№2の場合は0

パブリッククラスNumberCombination {

public static void combination(int[] num, int x){//x is used to tell from which position in array permutations are needed to be done.
if(x!=num.length){
for(int i=x;i<num.length;i++){
int temp = num[i];
num[i] = num[x];
num[x] = temp;
combination(num,x+1);
temp = num[i];
num[i] = num[x];
num[x] = temp;
}
}
else{
for(int i=0;i<num.length;i++)
System.out.print(num[i]);
System.out.println();
}
}

public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Enter the number:");
int n = Integer.parseInt(br.readLine());
int[] num = new int[n+1];
for(int i=0;i<=n;i++)
num[i] = i;
combination(num, 0);

}

}