PHP массив считывает последовательность

0

В PHP у меня есть такой массив:

$BulkArray[$i]

Этот массив питается большим количеством чисел (например, 1 => 100, 2 => 300, 3 => 100 и т.д.). Теперь я хочу найти во всем диапазоне чисел, наибольшую последовательность числа, равного или меньше 500. Я хочу написать число преемственности.

например, у меня есть массив

1 => 100, 2  => 300, 3  => 100, 
4  => 50, 5 => 50, 6  => 50, 7  => 50, 8  => 50, 
9  => 500, 10  => 200, 11  => 100

как вы можете видеть, число 1,2 и 3 вместе 500. Таким образом, это первая последовательность.

2,3,4,5 также составляют 500 вместе. (Эта последовательность (4) больше, чем первая последовательность (3))

И так далее, вы получите наивысшую последовательность: 3,4,5,6,7,8 (последовательность с 6 номерами), которая составляет 350 (но ниже 500 м, как мы ее искали)

Теперь, как я могу писать с помощью массива:
$BulkArray[$i], что самая высокая последовательность - 6?

Потому что 6 - наивысшая последовательность, найденная во всем массиве за 500!

(Это для категоризации конкретных Карпов)

Теги:
arrays

2 ответа

-2
Лучший ответ

Нажмите здесь или здесь, вы можете увидеть

<?php //lets  call your $BulkArray = $values;
$values=array( 1 => 100, 2  => 300, 3  => 100, 
4  => 50, 5 => 50, 6  => 50, 7  => 50, 8  => 50, 
9  => 500, 10  => 200, 11  => 100 );
$sum=0; // to sum up until 500
$Vals500=array(); // array to store index with <= 500
$i=0;  // index for new aaray that will store keys that made up <= 500
$key1=1; //value to iterate the array defined above
//print_r($values); echo '<br/>';

for($key=1; $key <= count($values); $key++){

$sum = $sum + $values[$key]; // get sum of values

if($sum <= 500){ $Vals500[$i][]=$key; } //append all key of sum ==500
   
	if($sum == 500) { $i++;  $key=$key1++; $sum=0; } //check sum then reinitialize values
	
}
foreach($Vals500 as $val){} //search for second array with many indeces in $Vals500. NB: i fail this place
echo print_r($Vals500); 

print 'the highest succession found is  '; print_r($Vals500[2]); //
?>
1

Ответ пользователя "fas M" здесь снова, с небольшим улучшением:

<?php //lets  call your $BulkArray = $values;
 $values=array( 1 => 100, 2  => 300, 3  => 100, 
4  => 50, 5 => 50, 6  => 50, 7  => 50, 8  => 50, 
9  => 500, 10  => 200, 11  => 100 );
$sum=0; // to sum up until 500
$Vals500=array(); // array to store index with <= 500
$i=0; // index for new aaray that will store keys that made up <= 500
$key1=1; //value to iterate the array defined above

for($key=1; $key <= count($values); $key++){

$sum = $sum + $values[$key]; // get sum of values

if($sum <= 500){ $Vals500[$i][]=$key; } //append all key of sum ==500

    if($sum >= 500) { $i++;  $key=$key1++; $sum=0; } //check sum then reintialize
    //added bigger equal

}

echo count(max($Vals500)); // read out the biggest succession
?>

Еще раз спасибо fas M!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню