jak zaznaczyc najdluzszy ciag

0

witam..
mam o to taki kod ktory liczy najdlyzszy ciag wygenerowanych losowo 1 i 0
i liczy mi ladnie wszystko super..

mam jedyki niebieskie a zera czerwone ale wszystkie..
a jak zrobic zeby zaznaczyc tylko ten najdluzszy ciag?

<?php
// liczymy najdluzszy ciag zer i jedynek
$tab= array ();

for($i=0; $i<50; $i++)
{
$jaka = rand(0,1); // 1 czy 0

		if($jaka==1)
		{$jedynki=$jaka;
		$zer=0;


		$jed=$jed+1;
	
				if($ilejed<$jed)	//najdlyzszy ciag jedynek
				{$ilejed=$jed;

				}
		
							
				
				
		echo '<span style="color: blue; ">'.$jedynki.'</span>';				
		}	

		if($jaka==0)
		{$zera=$jaka;
		$jed=0;
		
		
		
		


		$zer=$zer+1;
		
				if($ilezer<$zer)	//najdlyzszy ciag zer
				{$ilezer=$zer;

				}
				echo '<span style="color: red; ">'.$zera.'</span>';
		}

}


echo '<br>najdluzszy ciag jedynek  : '.$ilejed;
echo '<br>najdluzszy ciag zer  : '.$ilezer;



?> 
0

np zapisywać w tablicy i później sprawdzić długość, albo skorzystać z wyrażeń regularnych i znaleźć nimi najdłuższy ciąg

0

Ogarnij tabulację w kodzie zanim o pomoc poprosisz.

0
<?php
// liczymy najdluzszy ciag zer i jedynek
$tab= array ();

$i1=0;
$i0=0;
$jed=0;
$zer=0;
$ilejed=0;
$ilezer=0;
for($i=0; $i<50; $i++)
{
	$jaka = rand(0,1); // 1 czy 0
	$tab[$i]=$jaka;
	if($jaka==1)
	{
		$jedynki=$jaka;
		$zer=0;

		$jed=$jed+1;

		if($ilejed<$jed)        //najdlyzszy ciag jedynek
		{
			$ilejed=$jed;
			$i1=1+$i-$ilejed;
		}
		//echo '<span style="color: blue; ">'.$jedynki.'</span>';
	}

	if($jaka==0)
	{
		$zera=$jaka;
		$jed=0;
		$zer=$zer+1;

		if($ilezer<$zer)        //najdlyzszy ciag zer
		{
			$ilezer=$zer;
			$i0=1+$i-$ilezer;
		}
		//echo '<span style="color: red; ">'.$zera.'</span>';
	}
}

/*
echo '<br>najdluzszy ciag jedynek  : '.$ilejed;
echo '<br>najdluzszy ciag zer  : '.$ilezer;
*/
for($i=0; $i<50; $i++)
{
	if(($i==($i1+$ilejed)) || ($i==($i0+$ilezer)))echo '</span>';
	if($i==$i1)echo'<span style="color: blue; ">';
	if($i==$i0)echo'<span style="color: red; ">';
	echo $tab[$i];
}
?>
0

wygląda całkiem dobrze i nawet działa :D

o ile oczywiście chcesz zaznaczać tylko pierwszy z największych podciągów

poza tym znalazłbym tu zastosowanie dla else na potrzeby logiczności kodu

0

Ja bym to zrobił całkowicie inaczej (na dwuelementowej tablicy), ale chciałem mu pokazać analogię do jego kodu. Dlatego również zostawiłem zaremowane linijki.

pozdrawiaMM

0

dzieki wielkie;) o to wlasnie mi chodzi

1 użytkowników online, w tym zalogowanych: 0, gości: 1