Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Не простой примитив для профи
 
 автор: STEVER   (24.08.2006 в 14:49)
 
 

Задача:
Есть массив из него нужно получить все возможные сочетания элементов этого массива.
(Сочетания можно кидать в строку и сразу на вывод)
Когда начинал делать, думал задача элеметарнейшая, но увы.
Возможно кто то придложит свое решение?

   
 
 автор: Trianon   (24.08.2006 в 15:50)   письмо автору
 
   для: STEVER   (24.08.2006 в 14:49)
 

В массиве, видимо, множество.
А что такое сочетание?

   
 
 автор: STEVER   (24.08.2006 в 17:11)
 
   для: Trianon   (24.08.2006 в 15:50)
 

на сколько я помню из дискретки
Сочетание - это произвольная выборка элементов множества, элементы данной выборки попарноразличны(т.е. нет одинаковых)

пример, множество {1,2 }
возможные сочетания:
{1}
{2}
{1,2}
{2,1}

для множества {1,2,3}
получим сочетания:
{1}
{2}

{1,2}
{2,1}
{2,3}
{3,2}
{1,3}
{3,1}

{1,2,3}
{1,3,2}
{2,1,3}
{2,3,1}
{3,1,2}
{3,2,1}

   
 
 автор: STEVER   (24.08.2006 в 18:05)
 
   для: STEVER   (24.08.2006 в 17:11)
 

что никто не тянет?

   
 
 автор: Trianon   (24.08.2006 в 18:48)   письмо автору
 
   для: STEVER   (24.08.2006 в 17:11)
 

Вы пропустили сочетание 3

function let($set, $in)
{
    if(empty($in))
              return;
    for($k = 0; $k < count($in); $k++)
    {
        $out = array();
        for($r = 0; $r < $k; $r++)
           $out[] = $in[$r];
        $x = $in[$k];
        for($r = $k+1; $r < count($in); $r++)
           $out[] = $in[$r];
        $res = array();
        for($j = 0; $j < count($set); $j++) $res [] = $set[$j];
        $res [] = $x;
        foreach($res as $v)echo " $v"; echo '<br>';
        let($res, $out);
    }
}
let(array(), array(1,2,3));
?>

   
 
 автор: STEVER   (24.08.2006 в 19:23)   письмо автору
 
   для: Trianon   (24.08.2006 в 18:48)
 

Слава великому программисту Trianon !

   
 
 автор: NFR   (24.08.2006 в 19:08)   письмо автору
 
   для: STEVER   (24.08.2006 в 14:49)
 

Что-то оно мне напомнило...
http://www.free-lance.ru/blogs/view.php?tr=17749

   
 
 автор: STEVER   (24.08.2006 в 19:24)   письмо автору
 
   для: NFR   (24.08.2006 в 19:08)
 

Это мой пост: хотел проверить сколько человек отзовется, сейчас грохну.

   
 
 автор: NFR   (24.08.2006 в 19:31)   письмо автору
 
   для: STEVER   (24.08.2006 в 19:24)
 

А я думал за работу взялся и решил спихнуть кому-нибудь забесплатно;-)

   
 
 автор: STEVER   (24.08.2006 в 19:53)   письмо автору
 
   для: NFR   (24.08.2006 в 19:31)
 

=)
да нет.

Если интересно могу даже рассказать зачем мне это нужно.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования