Accueil > Forum > > > > algorithmique
algorithmique
vendredi 6 janvier 2006 à 12:27:34 |
algorithmique

chouchou1978
|
Bonjour a tous,
Voila ... J'ai un tableau 2D dont je connais le nombre de lignes et
dont chaque ligne a un nombre de colonnes connu. Le nombre de lignes
doit pouvoi etre variable entre 2 executions du code. Je voudrais
enumerer toutes les possibilites. Un exemple sera plus parlant ...
2 6
5
4 8
1
(on a : t(0)(0) = 2, t(2)(1) = 8, ...)
Je voudrais obtenir en sortie les suites :
2 5 4 1
2 5 8 1
6 5 4 1
6 5 8 1
D'avance merci
|
|
vendredi 6 janvier 2006 à 15:22:33 |
Re : algorithmique

ketchupy45
|
C'est quoi le rapport entre l'entrée et la sortie?? Explique un peu plus en détails j'ai pas compris ce que tu veux
|
|
vendredi 6 janvier 2006 à 20:08:05 |
Re : algorithmique

Pamaury
|
Réponse acceptée !
Si j'ai bien comrpis ce que tu veux dire(pseudo C):
typedef struct Tab1D { Array<int> array; };
Array<Tab1D> Array2D;
void EnumAllPos(int row,Array<int>& cur_list) { if(row==Array2D.size()) return Print(cur_list); int last_index=cur_list.push();
for(int i=0;i<Array2D[row].Size();i++) { cur_list[last_index]=Array2D[row].array[i]; EnumAllPos(row+1,cur_list); } }
Comme ce code est pas très facile à comprendre si tu code pas en C++ voilà le pseudo cod # array[y][x] correspond à la colonne x et à la ligne y # array.size est le nombre de lignes # array[y].size est le nombre de colonne dans la ligne y Array2D array;
# ref x veut dire qu'on passe la valeur en référence function EnumAllPos( row: Integer , ref list:Array<int> ): Void if row == array.size then ret Print(list) foreach value V of array[row] list[row]=V call EnumAllPos(row+1 , list ) end ret end
Et l'appel initial: list: Array<int> list.size = array.size call EnumAllPos( 0, list )
J'espère que c'est bien ce que tu veux faire en fait il suffit pour chaque ligne de réappeler la fonction pour la ligne suivante en lui passant une liste des entier de la liste en cours et en la mettant en cours selon la valeur de la ligne
A m a u r y
|
|
samedi 7 janvier 2006 à 13:05:08 |
Re : algorithmique

chouchou1978
|
Salut et merci
En fait, je vais essayer d'etre plus cair en decrivant ma structure de
donnees. J'ai une classe PILE <T> qui est derivee de std::vector
<T>. Donc, du C++ ...
Mon tableau est en fait une PILE < PILE <int> >. J'ai donc
la methode size() pour connaitre le nombre de lignes, et pour chaque
ligne, le nombre de colonnes. J'empile avec l'operateur "<<". Par
exemple :
PILE < PILE <int> > app;
app << NULL; // je cree une nouvelle ligne
app(ind) << k; // j'ajoute la valeur k a la ligne ind (a la fin)
En sortie, je voudrais avoir une PILE < PILE <int> > qui
donne toutes les solutions possibles d'enumerations comme donne dans
l'exemple du 1er message. Il est evidemment possible de connaitre le
nombre de possibilites a l'avance
J'avoue que je ne comprens pas tres bien le code que tu m'as donne,
alors, si tu pouvais me le reexpliquer, ca m'arrangerait bien.
Merci encore
|
|
samedi 7 janvier 2006 à 16:34:54 |
Re : algorithmique

MrdJack
|
"Il est evidemment possible de connaitre le nombre de possibilites a l'avance"
--> si tu multiplies le nombre de colonne de chaques ligne de la liste, tu as ton nombre de combinaison.
2 6
5
4 8
1
-->> 2 * 1 * 2 * 1 = 4 possibilités
2541
2581
6541
6581
voila pour le ptit detail sanqs importance...
|
|
samedi 7 janvier 2006 à 17:03:57 |
Re : algorithmique

chouchou1978
|
Oui, sans detailler, la methode, c'est ce que je disais ...
|
|
dimanche 8 janvier 2006 à 13:50:47 |
Re : algorithmique

Pamaury
|
Bon je vais essayer de détailler l'algo(qui est pourtant clair je trouve): Théorie: A chaque ligne, il a N éléments . Pour énumérer chaque possibilité, il faut que chaque un élément de chaque ligne apparaisse donc on en choisit un parmis les N possible . comme on veut énumérer TOUTES les possibilité il faut choisir tour à tour chaqcun des N élément de réappeler l'algorithme à la ligne d'en dessous .
Exemple: 1 2 4 5 6 7 8
liste L={} ->Première ligne: 2 éléments On choisit 1: L={1} ->Deuxième ligne: 2éléments On choisit 4: L={1,4} ->Trosième ligne: 1 élément On choisit 6: L={1,4,6} ->Quatrième ligne: 2 éléments On choisit 7:L={1,4,6,7} PREMIRE POSSIBILITE On chosit 8: L={1,4,6,8} DEUXIEME POSSIBILITE On chosit 5: L={1,5}
->Trosième ligne: 1 élément
On choisit 6: L={1,5,6}
->Quatrième ligne: 2 éléments
On choisit 7:L={1,5,6,7} TROISIEME POSSIBILITE
On chosit 8: L={1,5,6,8} QUATRIEME POSSIBILITE On choisit 2: L={2}
->Deuxième ligne: 2éléments
On choisit 4: L={2,4}
->Trosième ligne: 1 élément
On choisit 6: L={2,4,6}
->Quatrième ligne: 2 éléments
On choisit 7:L={2,4,6,7} SINQUIEME POSSIBILITE
On chosit 8: L={2,4,6,8} SIXIEME POSSIBILITE
On chosit 5: L={2,5}
->Trosième ligne: 1 élément
On choisit 6: L={2,5,6}
->Quatrième ligne: 2 éléments
On choisit 7:L={2,5,6,7} SEPTIEME POSSIBILITE
On chosit 8: L={2,5,6,8} HUITIEME POSSIBILITE
Et comme l'a dit MrdJack: 2*2*1*2=8 possibilité J'epsère que c'est clair comme çà
A m a u r y
|
|
dimanche 8 janvier 2006 à 16:24:08 |
Re : algorithmique

chouchou1978
|
OK, merci. En fait, l'algo que tu m'avais donne precedemment etait tres
clair. Juste une erreur d'implementation ... Corrige, avec ma structure
de donnees decrites ci-dessus, ca donne ca :
bool EnumAllPos(int raw, const PILE < PILE <int> >
&app, PILE <int> &pile, PILE < PILE <int> >
&result)
{
if( raw == app.size() )
{
result << pile;
return true;
}
int i;
for(i=0;i<app(raw).size();i++)
{
pile(raw) = app(raw)(i);
EnumAllPos(raw+1,app,pile,result);
}
}
void Test_Enum( void )
{
PILE < PILE <int> > app;
app << NULL;
app(0) << 1;
app << NULL;
app(1) << 5;
app(1) << 8;
app << NULL;
app(2) << 12;
app(2) << 1276;
app(2) << 3;
app(2) << 98;
app << NULL;
app(3) << 15;
app(3) << 22;
int i, tot = 1;
PILE <int> pi;
pi.reserve(4);
for (i=0;i<app.size();i++)
{
tot *= app(i).size();
pi << NULL;
}
PILE < PILE <int> > res;
res.reserve(tot);
EnumAllPos(0,app,pi,res);
for (i=0;i<res.size();i++)
SORTIEMESSAGE("res("<<i<<") -->
"<<res(i)<<std::endl);
}
Merci pour ton aide ...
|
|
dimanche 8 janvier 2006 à 16:33:45 |
Re : algorithmique

Pamaury
|
ligne en anglais c'est pas "row" ?
A m a u r y
|
|
Cette discussion est classée dans : nombre, lignes, algorithmique
Répondre à ce message
Sujets en rapport avec ce message
nombre de lignes dans un fichier [ par Boa51 ]
bonjour! J'ai un projet à réaliser en MFC et je voudrais savoir si il existe une fonction qui me permet de connaitre le nombre de lignes dans un fichi
Compter les lignes d un fichier texte [ par DeepThroat ]
Bonjour a tous !J'aimerai trouver une fontion simple qui retourne le nombre de lignes dans un fichier , ou bien qui affiche ce nombre de lignes.j'imag
pb recuperer nombre de lignes [ par sergio18 ]
Bonjourje fais une classe ou je recupere le contenu d'un fichier texte lignes par lignes. Pour cela,j'utilise la fonction fgets et vu qu'elle ne retou
algorithmique svp c urgent [ par blastmanu ]
bonjour tt le monde voila je doit faire l'algorithme puis le traduire en C++(langage descriptif) pouvez vous m'aider svp pour faire au moins l'algo.me
algo urgent svp [ par blastmanu ]
bonjour tt le monde voila je doit faire l'algorithme puis le traduire en C++(langage descriptif) pouvez vous m'aider svp pour faire au moins l'algo.me
operateur (-) [ par mat74 ]
salut a ts voila je suis en train de créer une classe de gestion des grds nombres et j'ai pas trouver comment definir l'operateur (-)pr faire sa par e
Nombre limité de boutons dans Visual C++??? [ par samovian ]
Bonjourje dois permettre à l'utilisateur de cliquer sur une grille de 20*20.Pour cela j'ai voulu creer (en utilisant les MFC car je debute en C) les 4
CListBox: Ajouter les lignes devant [ par themaste ]
Bonjour à tous!Voila, j'aimerais pouvoir faire une sorte de log dans un listBox.Mais mon pbl, est que je ne sais pas comment faire pour insérer les él
Problème de récupération des lignes d'un Edit Multiline [ par LaPatoshe ]
Bonjour, j'ai un petit problème car je ne parviens pas à récupérer de façon intacte chacune des lignes rentrées dans un controle Edit en Multiline.Voi
probleme de boucle... Urgent ! [ par AshenShugar ]
Salut tout le monde,voila, j'ai un morceau de code qui est celui-ci :while ((Ligne 20)) { Ligne = 0; printf("\nSaisissez le nombre de lignes
Livres en rapport
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Forum
RE : SAC A DOS RE : SAC A DOS par hadjkaddour
Cliquez pour lire la suite par hadjkaddour
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|