Disons que j'ai un nsarray de nsnumbers comme celui-ci: 1, 2, 3 p>
Ensuite, l'ensemble de toutes les permutations possibles ressemblerait à ceci comme suit: P>
1, 2, 3 p>
1, 3, 2 p>
2, 1, 3 p>
2, 3, 1 p>
3, 1, 2 p>
3, 2, 1 p> blockQuote>
Qu'est-ce qu'un bon moyen de le faire dans Objective-C? P>
5 Réponses :
Il pourrait y avoir une meilleure façon de le faire (sur place ou quelque chose), mais cela semble fonctionner:
en-tête: p> implémentation: < / p> pour l'utiliser, tout simplement [code adapté du code PHP ici .] P> p> #import code> le fichier d'en-tête et appelez
[Yourarray Allpermutations] code>; La méthode renvoie une matrice contenant des matrices pour chaque permutation. P>
Qu'est-ce que le nom des fichiers H et M doit être?
Tout ce que vous voulez qu'ils soient; Il n'y a pas d'exigence. Assurez-vous simplement qu'ils sont dans votre répertoire de projet (ou quelque part, votre projet recherche des fichiers à compiler).
Il y a une petite fuite dans votre code: vous devez libérer (Perm) avant de revenir de la méthode Allpermutations.
Avait d'autres problèmes avec votre code: les deux boucles de PC_Next_permutation n'avaient aucune condition de fin valide. Pour mieux comprendre, j'ai également renommé les noms de variables et posté le code corrigé dans une nouvelle réponse ci-dessous.
Fuite de mémoire - Comme indiqué par @pelogon + Sigabrt, lorsqu'il est exécuté. J'ai utilisé la solution de Pelogon.
Hah; Je ne me souviens même pas d'écrire cela. Je ne sais pas pourquoi je ne l'ai pas vété en premier. J'avais réécrit beaucoup différemment, maintenant ...
J'ai utilisé le code de la réponse de Wevah ci-dessus et j'ai découvert quelques problèmes avec cela, voici ici mes modifications pour que cela fonctionne correctement:
nsarray + permutation.h p>
Grandes solutions! Merci.
Vous pouvez modifier nstring * caractères code> vers
id quelque chose code> et l'utiliser pour tout type d'objet
meilleure réponse ive vu jusqu'à présent. J'ai apporté des changements afin qu'il fonctionne avec n'importe quel type non seulement nstring
Réponse de SSJ expansée à
-Log imprime pour clarté p>
- -work avec n'importe quel objet p>
-Proplications d'explications p>
-Cover Effections d'Erreur peut résulter p> sortie du journal pour entrée @ [@ 1, @ 2, @ 3] p>
Cela semble échouer pour moi lorsque le tableau a deux des mêmes chiffres.
Je suis récemment tombé sur le même problème et j'ai écrit une solution récursive que je crois est plus lisible. Il repose sur le principal principal qui est noté ici . J'y incluais ici au cas où cela aidera quelqu'un: exemple d'appel: p> résultat: p> 1, 2, 3 p>
1, 3, 2 p>
2, 1, 3 p>
2, 3, 1 p>
3, 1, 2 p>
3, 2, 1 p>
blockQuote> p>