Passer un algo iteratif en recursif

Peavy57 Messages postés 4 Date d'inscription mercredi 24 septembre 2003 Statut Membre Dernière intervention 28 septembre 2003 - 24 sept. 2003 à 17:51
Peavy57 Messages postés 4 Date d'inscription mercredi 24 septembre 2003 Statut Membre Dernière intervention 28 septembre 2003 - 28 sept. 2003 à 04:52
Selon vous est ce possible de mettre cela en recursif ?

Code:

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include

void sequencesSerie4(int seq[],int seqSize, int seqLen, int step, int curr)
{
int total = 0;
int bound = 0;

for (int i=0; i < 2; i++)
{
for (int j=i; j < i+seqLen && j < seqSize; j++)
{
for (int k=j; k < j+seqLen && k < seqSize; k++)
{
for (int l=k;l < k+seqLen && l < seqSize; l++)
{
if ( l >= 3+i )
{
cout << seq[i] << " ";
cout << seq[j] << " ";
cout << seq[k] << " ";
cout << seq[l] << " ";
cout << endl;
total++;
}
}
}
}
}
cout << "Total: " << total << endl;
}

int main()
{
int seq[] = {12,13,23,21,31,32};

sequencesSerie4(seq, 6, 4, 0, 0);

getch();
}



et si oui comment...
Merci pour votre aide
Peavy

6 réponses

cs_C2S Messages postés 38 Date d'inscription vendredi 7 février 2003 Statut Membre Dernière intervention 20 mars 2005
24 sept. 2003 à 19:52
explique ce que doit faire ton programme stp... je penses pouvoir te le recursifer.... je penses hein ! ;-)

------------
C2S
------------
0
Peavy57 Messages postés 4 Date d'inscription mercredi 24 septembre 2003 Statut Membre Dernière intervention 28 septembre 2003
24 sept. 2003 à 20:12
Merci pour ton aide. En fait l ennonce se trouve ici, c est la progrmming question...
http://www.cs.concordia.ca/~teaching/comp352/2003f/Assign1/index.html
Le but final est de calculer le nombre de polygones que l on peut inscrire dans un triangle ( les chiffres 12, 13, etc... representent les droites qui coupent 2 cotes du triangle, par exemple un polygone 12,12,12,21 est compose de 4 droites, la 1ere coupe le cote 1 et 2 du triangle, la 2e et 3e aussi, la 4e coupe le les cotes 2 et 1 du triangle, etc...
http://www.cs.concordia.ca/~teaching/comp352/2003f/Assign1/index.html
Merci
0
cs_C2S Messages postés 38 Date d'inscription vendredi 7 février 2003 Statut Membre Dernière intervention 20 mars 2005
24 sept. 2003 à 21:05
je comprend pas bien les regles, pkoi la sequence fausse est fausse? explique moi vite fait les regles et je penses pouvoir le faire
;-)
------------
C2S
------------
0
Peavy57 Messages postés 4 Date d'inscription mercredi 24 septembre 2003 Statut Membre Dernière intervention 28 septembre 2003
24 sept. 2003 à 21:20
parce que tu as un ordre a respecter pour afficher les nombres
le voici
Number Followed by one of:
12 - 12, 13, 23, or 21
13 - 13, 23, 21, or 31
23 - 23, 21, 31, or 32
21 - 21, 31, or 32
31 - 31, or 32
32 - 32
avec comme pre requis que la sequence commence par 12 ou 13 et que si ca commence par 12 ca doit se finir par 21 31 2 et que si ca commence par 13 ca doit se finir par 31 ou 32.
12 12 12 12 n est pas bon car le 1er nombre est 12 (donc le dernier doit etre 21 forcement (car 21 est bien dans 21 31 32 et dans 12 13 23 21 (les successeurs de 12))
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Azar Messages postés 9 Date d'inscription lundi 20 mai 2002 Statut Membre Dernière intervention 27 septembre 2003
27 sept. 2003 à 22:34
En gros tu dois écrire un algo pour trouver tous les chemins de longueur 4 en partant des sommets 12 et 13.

Les parcours de graphes en récursif tu devrais trouver pas mal de sources sur le net.

Le seul truc vraiment génant en fait c'est que 13 ne puisse pas terminer une séquence débutant par 13. D'après leur tableau, 13 peut suivre 13,donc 13 13 13 13 devrait être admise.

J'espere ne pas avoir répondu trop tard.
0
Peavy57 Messages postés 4 Date d'inscription mercredi 24 septembre 2003 Statut Membre Dernière intervention 28 septembre 2003
28 sept. 2003 à 04:52
La deadline etait vendredi mais c est bon j ai trouve une solution quio marche, la voici:

void Sequence::printRecSequences(int tabSeq[], int step, int pos)
{

if ( seqSize < 1 || seqLen < 1)
{
cout << "You must enter a valid size for your array and the length of your sequence (Positive and not equals to 0)." << endl;
return ;
}

if (step == 0 )
{

cout << "Sequences"<< endl;
cout << "================================"<< endl;

for(int i=0; i<2 ; i++)
{
tabSeq[0] = seq[i];
printRecSequences(tabSeq, step+1, i);
}

cout << "================================"<< endl;
cout << "Total number of sequences: " << totSeq << endl;
}
else if (step == seqLen)
{

if ( (tabSeq[0] == 12 && (tabSeq[seqLen-1] == 21 || tabSeq[seqLen-1] == 31 || tabSeq[seqLen-1] == 32) )
||
(tabSeq[0] == 13 && (tabSeq[seqLen-1] == 31 || tabSeq[seqLen-1] == 32) )
)
{

totSeq = totSeq+1;
for ( int k=0; k<seqLen; k++)
cout << tabSeq[k] << " ";
cout << endl;
}
}
else
{

for(int i=pos;i<pos+4 && i<seqSize;i++)
{
tabSeq[step]=seq[i];
printRecSequences(tabSeq, step+1, i);
}
}
}

en fit je l ai mise dans une classe
n hesite pas a me filer ton email si tu veux la soluce au cas ou cela t interesse
en tout cas merci pour ton aide
alexandre
0
Rejoignez-nous