нужна реализация функции на php.сущность такая, Есть массив
Нужна реализация функции на php.
сущность такая, Есть массив напр:
ar['310']=0.5;
ar['311']=0.375;
ar['312']=0.1;
В массиве может быть как больше так и меньше частей, нужно рассчитать все различные комбинации сумм частей, чтоб в итоге получилось число 1.5.
В данном примере обязано получится
0.5+0.5+0.5=1.5
0.5+0.5+0.1+0.1+0.1+0.1+0.1=1.5
0.5+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1=1.5
0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0. 1+0.1+0.1=1.5
0.375+0.375+0.375+0.375=1.5
Необходимо написать функцию, на входе в которую будет передаваться массив значений и число 1.5 (может быть хоть какое другое), а на выходе массив частей с ключами, которые мы передали сначала.
на выходе в общем обязано получиться что-то типо такового
arr[0]="310,310,310"
arr[0]="310,310,312,312,312,312,312"
arr[0]="310,312,312,312,312,312,312,312,312, 312 ,312"
arr[0]="312,312,312,312,312,312,312,312,312, 312 ,312,312,312,312,312"
arr[0]="311,311,311,311"
result = array();
arr = array ('310'=gt;0.5, '311'=gt;0.375, '312'=gt;0.1);
function rec(str)
sum = 0;
foreach (str as i) Вычисляем теснее имеющуюся сумму
sum += GLOBALS["arr"][i];
if (sum == 1.5)
GLOBALS["result"][] = str;
if (sum gt; 1.5) return;
foreach (GLOBALS["arr"] as key=gt;value)
hello = str; Не знаю, как это законно, но заработало только так...
hello[] = key;
rec(hello);
if (min(array_values(arr)) lt;= 0) die(); Бесконечнная рекурсия обязана быть предотвращена
rec(array());
foreach (result as amp;value) Переделываем массив массивов в массив строк
value = implode(', ', value);
unset(value);
print_r(result);
?gt;
-
Вопросы ответы
Статьи
Информатика
Статьи
Химия.
Русский язык.
Геометрия.
Физика.
Русский язык.
Химия.
Математика.
География.
Литература.
Разные вопросы.