Je travaille avec des permutations où chaque élément est différent de son emplacement d'origine. Je voudrais un algorithme qui donné {une longueur d'entrée, ligne et chiffre}, me donnera le numéro de sortie. Voici un exemple:Trouver les permutations où aucun élément ne reste en place
Si la longueur d'entrée est de quatre, toutes les permutations desont:
0123,0132,0213,0231,0312,0321,
1023,1032,1203,1230,1302,1320,
2013,2031,2103,2130,2301,2310,
3012,3021,3102,3120,3201,3210
Les permutations dont aucun chiffre est au même endroit (chaque chiffre est déplacé):
1032,1230,1302,
2031,2301,2310,
3012,3201,3210
La numérotation commence à 0, donc si l'entrée à la fonction est {4,0,0}, la sortie doit être le 0ème chiffre (le plus à gauche) de la 0e (première) permutation. Le premier chiffre de 1032 est 1.
Si l'entrée est {4,1,1} alors la sortie est le deuxième chiffre de 1230, qui est égal à 2.
Le numéro de ligne est peut-être plus le nubmer de permutations. Dans ce cas, prendre le reste modulo le nombre de permutations (dans le cas ci-dessus, ligne modulo 9).
Dans la langue c serait génial.
(Ce ne sont pas des devoirs, c'est pour le travail.) Si vous devez savoir, j'aimerais sélectionner aléatoirement les swaps que je ferai à chaque étape pour voir si c'est mieux que BFS quand le nombre de tables . est supérieur à deux)
Cette question n'a vraiment pas de réponse significative sauf si vous définissez un ordre partiel sur les permutations. Qui a dit quedoit venir avant 0213? –
Bon commentaire Tyler. J'ai ordonné les permutations du plus petit au plus grand mais je ne m'inquiète pas de l'ordre des rangées tant que la sortie est fonction seulement des entrées et que chaque rangée est également probable. – Eyal
Si ce n'est pas les devoirs, je suis désolé de l'avoir étiqueté comme tel. J'ai retiré le tag à nouveau. J'étais très sûr, surtout depuis que tu l'as fait wiki communautaire. Je m'excuse. – balpha