J'ai un tableau à une dimension qui remplit une table de 40 éléments aléatoires (toutes les valeurs sont 0 ou 1). Je veux trouver la plus longue série de valeurs consécutives.Tableau à 1 dimension comptant les mêmes éléments
Par exemple:
En 111100101
la plus longue rangée serait 1111
parce qu'il a quatre valeurs consécutives de 1
. En 011100
le résultat est 111
.
Je n'ai aucune idée comment vérifier sur le "prochain élément" et vérifier si c'est un 0 ou 1. Comme le premier serait 1111 (compte 4) mais le prochain serait une valeur 0, ce qui signifie que je dois arrête de compter.
Mon idée était de placer cette valeur (4) dans un autre tableau (exemple: 111100101), et de placer la valeur de 1 sur zéro. Et recommencez le processus.
Pour trouver la plus grande valeur, j'ai fait une autre méthode qui vérifie la plus grande valeur dans le tableau qui garde la trace du nombre de 0, ce n'est pas le problème.
Mais je ne trouve pas un moyen de remplir le tableau tabelLdr up, ayant toutes les valeurs du groupe d'éléments de même nature (étant 0 ou 1).
Dans le code ci-dessous je 2 si ce et bien sûr, il ne sera jamais dans le second cas (pour vérifier si la valeur suivante du tableau est! = À son état actuel (valant 0 ou 1).
public void BerekenDeelrij(byte[] tabel, byte[] tabelLdr)
{
byte LdrNul = 0, Ldréén = 0;
//byte teller = 0;
for (byte i = 0; i < tabel.Length; i++)
{
if (tabel[i] == 0)
{
LdrNul++;
//this 2nd if cleary does not work, but i have no idea how to implend this sort of idea in my program.
if (tabel[i] == 1) //if value != 0 then the total value gets put in the second array tabelLdr,
{
tabelLdr[i] = LdrNul;
LdrNul = 0
}
}
if (tabel[i] == 1)
{
Ldréén++;
if (tabel[i] == 0)
{
tabelLdr[i] = Ldréén;
Ldréén = 0;
}
}
}/*for*/
}