"parcours" tableau 2D - Algo - Programmation
Marsh Posté le 06-01-2006 à 15:03:36
Bonjour,
C'est pas très clair... Nombre de lignes et de colonnes variabes, c'est bien ça ? Il y a une limite au tableau (nombre de ligne/col. maxi) ?
Et où en es-tu ? Quelles pistes ? (Rappel : On ne fait pas tout le boulot )
Une possibilité simple-mais pas optimisée :
Un tableau L*C (où L est le nombre maxi de lignes, C le nombre maxi de colonnes), rempli de -1 (par exemple) par défaut.
Ensuite, tu fais deux boucles imbriquées...
[Edit]:Autre chose...Change le titre - On saitqu'on est dans "Algo"
Marsh Posté le 06-01-2006 à 15:08:49
si ton lagage supporte les tableaux à 2 dimensions (et non vecteurs de vecteurs), ben tu cherches la plus grande dimension des tableau de niveau 2, et tu déclale un tableau comme suit :
tab[x, y] avec x = nblignes et y = nbMaxColonnes
Ensuite t'as plusqu'à faire une boucle pour recopier les données de ton vecteur de vecteurs dans ce tableau
Marsh Posté le 06-01-2006 à 15:22:37
macgawel a écrit : Bonjour, |
Pour repondre a tout ca : ma structure de donnees est une classe derivee de std::vector. j'ai donc la methode size() pour connaitre les dimensions de chaque ligne (mon tableau s'apparente en fait a un std::vector <std::vector> de int...). Il y a un nb de lignes maxi, mais pour les colonnes, on ne sait pas (c'est qd meme borne ...).
Ce que je voulais dire dans mon 1er post, c'est que pour les differentes lignes n'ont pas forcement le meme nombre de colonnes.
macgawel a écrit : |
ben je galere un peu pq je vois pas comment gerer ca avec un systeme de boucles ...
macgawel a écrit : |
[Edit]:Autre chose...Change le titre - On saitqu'on est dans "Algo" [/quotemsg]
Marsh Posté le 09-01-2006 à 16:50:53
Alors, j'ai une solution, mais recursive ... Le probleme, c'est, evidemment, que j'ai parfois tendance a exploser la memoire, et niveau rapidite, c'est pas top. Je la donne :
PILE <T> est une classe derivee de std::vector ...
Code :
|
Avec l'appel :
Code :
|
Donc, si vous voyez un moyen pour transformer cette petite chose en algo iteratif, ca m'interesserait au plus haut point ...
Merci d'avance ...
Marsh Posté le 10-01-2006 à 12:06:46
En relisant le sujet du topic, je me rends compte que j'avais un peu pas tout compris à la base
Marsh Posté le 10-01-2006 à 12:16:06
Solution simple :
- Largeur ^ Hauteur. C'est la nouvelle dimension 1 de ton tableau
- i = 0. Tant que i < Largeur ^ Hauteur (t1)
- j = 0. Tant que j < Largeur (t2)
- tab[i, j] = oldTab[(i/Largeur^j)%Hauteur][j]
- j = j + 1
- Fin tant que (t2)
- Fin tant que (t1)
Regarde ce que ça donne, chuis pas sûr que ça marche, mais ça a l'air pas trop pire
Ha, et ça c'est pour un array avec un maximum de bruit (toutes lignes et colonnes remplies avec uniquement des valeurs différentes, donc le cas maximum de valeurs)
Ensuite tu fais une recherche des doublons et tu allimentes le tableau final sans ceux-ci.
C'est pas ce qu'il y a de plus propre, mais en revanche c'est simple, et certaiement aussi très rapide.
Marsh Posté le 10-01-2006 à 21:04:58
payen a écrit : Donc, si vous voyez un moyen pour transformer cette petite chose en algo iteratif, ca m'interesserait au plus haut point ... |
Salut
Tu peux t'en sortir avec une file, mais ce n'est pas top pour la rapidité.
Code :
|
Marsh Posté le 06-01-2006 à 14:53:59
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
Message édité par boubix le 06-01-2006 à 15:15:37