2013-05-08 7 views
0
int* m = new int [d1*d2]; 

Ceci est mon tableau.entiers récursifs plusS

for (j = 0; j < d2; j++) 
{  for (i = j; i < d1*d2; i +=d2){ 
     cout << *(m+i); 
     } 
    cout << endl; 
} 

Et en utilisant cela, je peux regrouper et imprimer le plus grand nombre entier dans chaque colonne si je le pense comme un tableau multidimensionnel.

Difficile d'expliquer ce que je veux faire. Je vais essayer de donner un exemple.

On suppose mon entrée est 1 4 2 5 2 1 0 3 4

sortie serait

1 5 0 

4 2 3 

2 1 4 

Je veux que le plus grand entier et garder la liste des plus grands entiers derrière de ce nombre entier suivant.

Pour la première ligne que je veux seulement 5, 0

Pour la deuxième rangée, je veux 4 et 3.

Pour la troisième rangée, je veux seulement 4.

sortie serait:

5, 0, 4, 3, 4

+0

Qu'est-ce 'largestS'? – leppie

+0

Je pense que vous devriez essayer cela. Au lieu de travailler sur des colonnes. Transposez simplement la matrice. Travailler sur les lignes. Les choses seront plus simples. Ensuite, transposez à nouveau si vous en avez besoin. – stardust

+0

par exemple pour ce cas vous aurez un vecteur de vecteurs. Ensuite, vous trouvez le maximum d'une ligne ou d'un vecteur que vous listez tous les éléments qui le suivent. Et puis vous répétez pour le vecteur suivant. – stardust

Répondre

1

si a[] contient votre ligne, il ressemble à ce que vous voulez est:

int i = column_count - 1; 
deque<int> largests_list; 
largests_list.push_front(a[i]); 
int largest_found = a[i]; 

while (i-- > 0) { 
    if (a[i] > largest_found) { 
     largests_list.push_front(a[i]); 
     largest_found = a[i]; 
    } 
} 
+0

Difficile de dire ce qu'il veut dire, mais en relisant la question, je pense que vous pourriez avoir raison. – OlivierD

0

Essayez deux boucles internes (à l'intérieur du sapin st):

int largest = m[j]; 
for (i = j + 1; i < d1*d2; i+=d2) 
{ 
    largest = max(largest, m[i]); 
} 
for (i = j; i < d1*d2; i+=d2) 
{ 
    if (m[i] == largest) 
    { 
     cout << largest--; 
    } 
}