2010-05-25 3 views
0

Dans une méthode, je calcule la plus longue rangée d'éléments. Le tableau à une dimension est rempli avec des valeurs aléatoires (0 ou 1). La méthode recherche la ligne la plus longue (étant 0 ou 1, quel que soit le plus long).
Par exemple:Recherche de 2 positions dans un tableau multidimensionnel

Dans 1110100 la plus longue rangée serait 3 (3 * 1)
Dans 0110000 la plus longue rangée serait 4 (4 * 0)

Pour 1110100 la position dans la matrice serait 0 à 2. pour 0110000 la position dans le tableau serait 3 à 6.

J'ai essayé avec foreach boucles, for boucles, etc., mais je ne peux pas sembler obtenir les indices appropriés des deux et ne peut pas sembler afficher b Les autres positions sont correctes.

La plus longue rangée d'éléments similaires se calcule comme suit based on my previous question:

public int BerekenDeelrij (int [] table) 
{ 
    int count = 0; 
    int value = 0; 
    int largest = 0; 

    for (int i=0; i < tabel.Length; i++) 
    { 
     if (value == tabel[i]) 
      counter + +; 
     else 
     { 
      largest = Math.Max largest (largest, counter); 
      final value = value 
      count = 1; 
     } 
    } 
    return Math.Max(largest, counter); 
} 
+1

Cet exemple de code est-il censé être C#? –

+0

Qu'est-ce que cela veut dire? – Chris

+0

Il demande dans quelle langue le code est écrit. Je suppose qu'il demande parce que ce n'est pas un C# valide. – ANeves

Répondre

2

Si vous remplacez le foreach() avec un for(;;) régulier, vous avez immédiatement vos indices disponibles au moment où vous en avez besoin.

1

Je ne suis pas l'affichage du code complet, car cela est marqué devoirs, mais une approche complètement différente pour résoudre ce problème, serait de trouver toutes les occurrences d'éléments consécutifs, et les regrouper dans un nouveau tableau:

[0, 1, 1, 0, 0, 0, 0] => ["0", "11", "0000"] 

alors vous pouvez commander que par item.Length, descendant, sélectionnez top 1 élément, par exemple "0000"

Après cela, joignez-vous le tableau agrégé

["0", "11", "0000"] => "0110000" 

Et à partir de là, renvoyez joinedResult.IndexOf(longestItem) et cet index + longestItem.Length

+0

Merci pour la réponse. Bien que ce soit ce que vous dites, je crains que je ne suis pas encore si profond dans C# et que je cherche une approche plus directe. Cordialement. – Chris

Questions connexes