<?
ini_set('memory_limit', '1000M');
$y=0;
$group=array(49,21,32,31,45,22,34,23,43,20,24,25); //массив из 12ти элементов
foreach($group as $k =>$v1){
foreach($group as $k => $v2){
foreach($group as $k => $v3){
foreach($group as $k => $v4){
foreach($group as $k => $v5){
foreach($group as $k => $v6) {
$combo[$y][0]=$v1;
$combo[$y][1]=$v2;
$combo[$y][2]=$v3;
$combo[$y][3]=$v4;
$combo[$y][4]=$v5;
$combo[$y][5]=$v6;
$y++;
}
}
}
}
}
} ?>
подскажите лучший алгорим .. .. должен же быть.. спасибо заранееФорум → Программирование → PHP для идиотов → алгоритм для всех возможных комбинаций
алгоритм для всех возможных комбинаций
-
нужен алгоритм чтобы разделить массив на все возможные комбинации из 6 элементов … на алгоритм который я юзаю не хватает памяти.. да и потом код надо подчищать от повторных значений… вот код:
-
Дек. 26, 2008, 6:57 п.п., спустя 1 минуту 15 секунд
нужен алгоритм чтобы разделить массив
По какому принципу разделить? -
-
Дек. 26, 2008, 7:01 п.п., спустя 2 минуты 3 секунды
То есть нужно из одного массива (12 элементов) получить кучу массивов, которые будут всеми возможными комбинациями из любых 6 элементов первого массива? Я правильно понял? -
-
Дек. 26, 2008, 7:17 п.п., спустя 14 минут 36 секунд
Не удивительно, что падает, 2985984 массива (если я правильно посчитал). Думаю, такие задачи нужно не на PHP решать. -
-
Дек. 26, 2008, 9:54 п.п., спустя 2 часа 35 минут 57 секунд
<?
ini_set('memory_limit', '1000M');
$y=0;
$group=array(49,21,32,31,45,22,34,23,43,20,24,25); //массив из 12ти элементов
foreach($group as $k =>$v1){
foreach($group as $k => $v2){
foreach($group as $k => $v3){
foreach($group as $k => $v4){
foreach($group as $k => $v5){
foreach($group as $k => $v6) {
$combo[]=$v1."|".$v2."|".$v3."|".$v4."|".$v5."|".$v6;
}
}
}
}
}
} ?>
этот вариант хорош если тебе не сильно важно что ты имеешь в конце :) массив или строку, но памяти должно сожрать меньше я думаю
в минимальном случае это займет 4230144 байт, реально думаю метров 50-100, сразу говорю я хз как сохраняет массивы в память пхп.
а вообще если объяснишь исходную задачу, то мб тебе можно будет помочь лучше :)Сапожник без сапог -
Дек. 26, 2008, 10:06 п.п., спустя 11 минут 12 секунд
реально думаю метров 50-100
Реально думаю ты на нолик ошибся. -
Дек. 26, 2008, 10:09 п.п., спустя 3 минуты 42 секунды
повторюсь. я хз как пхп хранит строки. насколько будет разница между строками и массивами. думаю что разница колосальнареально думаю метров 50-100
Реально думаю ты на нолик ошибся.Сапожник без сапог -
Дек. 27, 2008, 2:40 д.п., спустя 4 часа 30 минут 9 секунд
да думаю сохранять в строке немного памяти сохранило но все равно больше 1000 метров.. так что наверно я остановлюсь с 10 элементами :) .. полюбе спасибо за помощь.. я где-то видел код на джаве который делает то что мне надо, но как его на пхп переписать это вопрос
p.s. вот тут он кстати http://www.merriampark.com/comb.htm -
Дек. 27, 2008, 11:06 д.п., спустя 8 часов 26 минут 46 секунд
<?
ini_set('memory_limit', '1000M');
$y=0;
$g=array(49,21,32,31,45,22,34,23,43,20,24,25); //массив из 12ти элементов
$count = sizeof($g);
$combo = "&";
for($i1=0;$i1<$count;$i1++)
{
for($i2=0;$i2<$count;$i2++)
{
for($i3=0;$i3<$count;$i3++)
{
for($i4=0;$i4<$count;$i4++)
{
for($i5=0;$i5<$count;$i5++)
{
for($i6=0;$i6<$count;$i6++)
{
$combo .= "&".$g[$i1]."|".$g[$i2]."|".$g[$i3]."|".$g[$i4]."|".$g[$i5]."|".$g[$i6];
}
}
}
}
}
}
echo number_format(memory_get_usage());
я непонимаю накой хер тебе вообще это надо! ))
но смотри
этот алгоритм у меня занял всего 50 метров :)
твой же, даже со строкой занял 800 с чем то метров.
эта реализация дает возможность доступа к его "эелементу", но хранит их в строке. доступ производится простым strpos + substr :)
группы разбиты &. члены группы |.Сапожник без сапог -
Дек. 27, 2008, 12:15 п.п., спустя 1 час 8 минут 20 секунд
vanderson, сосредоточься на ответе на этот вопрос:
а вообще если объяснишь исходную задачу, то мб тебе можно будет помочь лучше :)
Пожалуйста, авторизуйтесь, чтобы написать комментарий!