/ / Pobierz wszystkie kombinacje określonej liczby [duplikat] - algorytm, sortowanie, kombinacje

Uzyskaj wszystkie kombinacje określonej liczby [duplikat] - algorytm, sortowanie, kombinacje

to może być głupie pytanie z prostą odpowiedzią, ale nie mogę „dla mojego życia to rozgryźć ..: p

Więc jeśli mam zmienną n = 2 na przykład chcę listę wszystkich sposobów, w jakie można połączyć liczby, które są mniejsze lub równe n

Wynik dla n = 2 byłoby wtedy:
012
021
102
120
201
210

Dzięki za pomoc :)

Odpowiedzi:

1 dla odpowiedzi № 1

Jest to pytanie matematyczne, ale próbujesz obliczyć permutacje 0 - n.

Aby obliczyć permutacje, użyj wzoru nPk, gdzie w twoim przypadku k jest liczbą, która została wybrana i n = k + 1. Chcesz wziąć silnię n i podzielić ją przez silnię n - k. ==> n! / (n - k)! W twoim przykładzie to byłoby

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

Poniższy link zawiera więcej szczegółów. http://www.mathwords.com/p/permutation_formula.htm


0 dla odpowiedzi nr 2

public class 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);

}

}