Maison >Java >javaDidacticiel >Comment pouvons-nous générer toutes les permutations uniques d'un tableau d'entiers ?

Comment pouvons-nous générer toutes les permutations uniques d'un tableau d'entiers ?

DDD
DDDoriginal
2024-12-11 16:03:17833parcourir

How Can We Generate All Unique Permutations of an Integer Array?

Les permutations d'un tableau peuvent être réalisées en générant toutes les combinaisons possibles tout en garantissant que chaque combinaison est unique. Pour approfondir ce concept, considérons le tableau donné :

int[] a = {3, 4, 6, 2, 1};

L'objectif est de lister toutes les permutations distinctes de ce tableau. Voici l'algorithme de pseudocode :

for (int i = 0; i < a.length; i++) {
  // Perform actions for each element of the array
  for (int j = i + 1; j < a.length; j++) {
    // Swap elements at indices i and j to generate a permutation
    int temp = a[i];
    a[i] = a[j];
    a[j] = temp;

    // Check if the current permutation has already been generated
    if (!hasBeenGenerated(a)) {
      // If the permutation is new, add it to the list of permutations
      addPermutationToList(a);
    }

    // Swap the elements back to restore the original array
    temp = a[i];
    a[i] = a[j];
    a[j] = temp;
  }
}

Dans cet algorithme, nous parcourons chaque élément du tableau (représenté par l'index i) et le comparons avec tous les autres éléments (représentés par l'index j). Si les éléments n'ont pas été échangés auparavant (indiqué par la vérification hasBeenGenerated()), nous créons une nouvelle permutation en les échangeant et l'ajoutons à la liste. Nous échangeons ensuite les éléments pour conserver le tableau d'origine. En considérant toutes les combinaisons possibles d'éléments, nous générons une liste complète de permutations.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn