Проблемы с тремя массивами

evgenmeg

Новичок
Здравствуйте, подскажите как можно обработать массивы
Код:
$a=array(1,1,3,2,4,5);
$b=array(2,3,4,5,6,6);
$c=array(0,2,3,15,4,44,5);
что бы в итоге получить сложение элементов из массива $с позиции складываемых чисел массива получаем из массивов $a и $b, с поиском самого большого результата.
Т.е должно получиться что то такое

as(1) = as(0) + ($a[?],$b[?]) = 0 + 2 = 2.
as(2) = as(0) + ($a[?],$b[?]) = 0 + 3 = 3.
as(3) = as(2) + ($a[?],$b[?])= 3 + 4 = 7.
as(4) = as(1) + ($a[?],$b[?]) = 2 + 15 = 17.
max(as(3) + ($a[?],$b[?]); as(4) + ($a[?],$b[?])) = max(7 + 44; 17 + 5) = 51.
 

С.

Продвинутый новичок
Массивы можно обработать, написав программу их обработки.
А какие у вас конкретно затруднения возникли?
 

evgenmeg

Новичок
Собственно с перебором и возникли.
в общем формула такая T[j]=max{ T + t [j] }
в итоге получается обрабатывать или по массиву a или b, но если попадаются одинаковые вообще не понять, что получается. Если вернуться к примеру, что я написал выше, то из него нормально выводится 0,2,3 потом начинаются проблемы всякие, в общем не те данные, что должны выводиться.
 

vasinsky

Новичок
я если честно, вообще эту формулировку не понял

что бы в итоге получить сложение элементов из массива $с позиции складываемых чисел массива получаем из массивов $a и $b, с поиском самого большого результата.
$с позиции складываемых чисел массива получаем из массивов $a и $b
по какому принципу?
с поиском самого большого результата.
результата чего?

что я написал выше, то из него нормально выводится 0,2,3 потом начинаются проблемы всякие

ну если я правильно начинаю понимать, то - нужно производить вычисления между элементами массива $c, так?

а чтобы знать - какие именно элементы массива $c будут использованы - нужно смотреть в массивы $a и $b - так ?

т.е. если взять первые элементы - то это $a[0] = 1 ; $b[0] = 2

след-но в массиве $c - это $c[1] = 2 и $c[2] = 3 так ???
 
Последнее редактирование:

С.

Продвинутый новичок
но если попадаются одинаковые вообще не понять, что получается
Это плохо. Программист должен иметь четкое представление, как работатет его прграммa, и что она делает на каждом шаге. Вот здесь написано, как это можно понять: http://phpfaq.ru/debug
 

vasinsky

Новичок
evgenmeg, вот смотри - если же я правильно понял твой ход мыслей


PHP:
 $a=array(1,1,3,2,4,5);
  $b=array(2,3,4,5,6,6);

  $c=array(0,2,3,15,4,44,5);

  foreach($a as $key=>$value){
    if(isset($b[$key]) && isset($c[$value]) && isset($c[$b[$key]])){
      
        $el = array($c[$value],$c[$b[$key]]);
        echo $value.','.$b[$key].' => ' .$c[$value].'+'.$c[$b[$key]].'='.array_sum($el).'<br/>';
    }
  }
В итоге по шаблону: $a[index], $b[index] => $c[$a[index]] + $c[$b[index]] = сумма эл-ов $c - с указанными индексами

1,2 => 2+3=5
1,3 => 2+15=17
3,4 => 15+4=19
2,5 => 3+44=47
4,6 => 4+5=9
5,6 => 44+5=49


вообще - проще может будет - если ты расскажешь - что это за чудо алгоритм и что он решает - своими словами, а не "тех. описанием" своих мыслей
 

evgenmeg

Новичок
т.е. если взять первые элементы - то это $a[0] = 1 ; $b[0] = 2
след-но в массиве $c - это $c[1] = 2 и $c[2] = 3 так ???
вы совершенно правильно поняли только я немного опечатался видать в формуле, правильная выглядеть так T[j]=max{ T + t [j] }
т.е. если взять элементы - $a[0] = 1 ; $b[0] = 2; $a[1] = 1 ; $b[1] = 3;
след-но в массиве $c - это $c[1] = 0 и $c[2] = 2, $c[3] = 3, $c[4] = 7, $c[5] = 17, $c[6] = 51, $c[7] = 22,
T[1]=0
T[2]=0 + 2 = 2.
T[3]=0 + 3 = 3.
T[4]=3 + 4 = 7.
T[5]=2 + 15 = 17.
max(T[6];T[7])=max(7 + 44; 17 + 5) = 51.

в общем вот такая ситуация.. извиняюсь, если как то не правильно объясняюсь.
 

evgenmeg

Новичок
Код:
T[j]=max{ T + t [i][j] }
значит не опечатался просто так тут настроенно
Код:
$c[1] = 0 и $c[2] = 2, $c[3] = 3, $c[4] = 7, $c[5] = 17, $c[6] = 51, $c[7] = 22
 

evgenmeg

Новичок
вообще - проще может будет - если ты расскажешь - что это за чудо алгоритм и что он решает - своими словами, а не "тех. описанием" своих мыслей
в общем задание: рассчитать ранние и поздние сроки свершения события сетевого графика, параметры работ задаются пользователем.
$a и $b- работа
$c- сроки работ
 

evgenmeg

Новичок
Код:
T[j]=max{ T[i] + t [i][j] }
надеюсь больше исправлять формулу не придется, в последний раз написания, я сам тупанул, признаю.
 

evgenmeg

Новичок
Это плохо. Программист должен иметь четкое представление, как работатет его прграммa, и что она делает на каждом шаге. Вот здесь написано, как это можно понять: http://phpfaq.ru/debug
вообще то я обычно пользуюсь echo и print_r для массивов, вывод ошибок и предупреждений также включен.
 

evgenmeg

Новичок
1,2 => 2+3=5
1,3 => 2+15=17
3,4 => 15+4=19
2,5 => 3+44=47
4,6 => 4+5=9
5,6 => 44+5=49
у меня как раз примерно тоже самое и получается ( видать так же как и вы понял эту формулу, хотя вы ее поняли так из-за опечатки.
 
Сверху