[algo/C/C++/java/php/...]fct recursive de permutation ?

fct recursive de permutation ? [algo/C/C++/java/php/...] - Algo - Programmation

Marsh Posté le 16-11-2002 à 16:07:48    

voila je voudrait avcoir toute les possible de placer une suite de chiffre normalement sur 10 chiffe:
4321,4312,4132,4123,4213,4231,2431,2413,2143,2134,2314,2341
3241,3214,3124,3142,3412,3421,1432,1423,1243,1234,1324,1342
 
=> j'ai fait une fct en C mais sa doit/peut etre independant du langage:
//mon tab de data est global
void perm(int n)
{
int tmp;
for (tmp=0;tmp<=n;tmp++)
{
if(n==0)break;
affiche();
perm(n-1);
if(tmp!=n)rev (n,n-1);//inverse 2 nbr
}
}
 
 
mais le prob c que la fct me donne:
4321,4312,4132,4123,4213,4231,2431,2413,2143,2134,2314,2341
3241,3214,3124,3142,3412,3421 jusque la ok  puis
 
4321 => on reboucle sur les  18 mêmemais il m'en manque tj 6


Message édité par erwan_oops le 17-11-2002 à 14:40:45

---------------
la théorie c quant tout dois fonctionner mais rien ne marche                                 la pratique c quant tout marche mais personne ne c pourquoi                           ici on fais un bon compromis rien ne marche et personne ne c pourquoi :D
Reply

Marsh Posté le 16-11-2002 à 16:07:48   

Reply

Marsh Posté le 16-11-2002 à 16:14:57    

c pas de la programmation ton problème c'est de l'algorithmique. Réfléchis à ca et puis tu peux l'implémenter en ce que tu veux


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 16-11-2002 à 16:23:01    

je sais que c'est de l'algo mais je ne trouve quand même pas comment le faire


---------------
la théorie c quant tout dois fonctionner mais rien ne marche                                 la pratique c quant tout marche mais personne ne c pourquoi                           ici on fais un bon compromis rien ne marche et personne ne c pourquoi :D
Reply

Marsh Posté le 16-11-2002 à 16:24:08    

tu as des cours de stat?


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 16-11-2002 à 16:24:57    

non


---------------
la théorie c quant tout dois fonctionner mais rien ne marche                                 la pratique c quant tout marche mais personne ne c pourquoi                           ici on fais un bon compromis rien ne marche et personne ne c pourquoi :D
Reply

Marsh Posté le 17-11-2002 à 14:42:20    

:bounce: qq'un svp ?


---------------
la théorie c quant tout dois fonctionner mais rien ne marche                                 la pratique c quant tout marche mais personne ne c pourquoi                           ici on fais un bon compromis rien ne marche et personne ne c pourquoi :D
Reply

Marsh Posté le 17-11-2002 à 16:34:45    

a ce ke je compren, tu veu faire un backtracking, donc ta fonction doit etre récursive, ca devrai ressembler a ca :
 
#include <stdio.h>
#include <conio.h>
 
long resultat = 0;
 
void perm (int n)
 {
 if (n == 0)
  printf ("%d\n",resultat);
 else
  for (int i = n; i > 0 ;i--)
   {
   resultat *= 10;
   resultat += i;
 
   perm (i-1);
 
   resultat /= 10;
   }
 }
 
main ()
 {
 perm (9);
 getch();
 }

Reply

Marsh Posté le 17-11-2002 à 16:37:36    

mé attention, o plus ton chiffre est gran, o plus ya de possibilités et o plus ca pren du temp

Reply

Marsh Posté le 17-11-2002 à 20:17:33    

non je vien d'essayer et ce n'est pas vraiment sa se que je cherhce
c (en lettre par ex)
pour une suite
abcd
toute les possiston possible =>
abcd,abdc,acdb,acbd,adbc,adcb,bacd,badc,bcad,bcda,bdac,bdca,
dacb,dabc,dbca,dbac,dcab,dcba,cbad,cbda,cabd,cadb,cdab,cdba


---------------
la théorie c quant tout dois fonctionner mais rien ne marche                                 la pratique c quant tout marche mais personne ne c pourquoi                           ici on fais un bon compromis rien ne marche et personne ne c pourquoi :D
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed