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

Форум PHP

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

 

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

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

тема: Алгоритм перебора
 
 автор: Бамси   (28.01.2008 в 19:06)   письмо автору
 
 

Нужен простейший алгоритм перебора, допустим:
aaa
aab
aac
..
aba
abb
и т.д.

Можно менять слева направа, не очень важно.

   
 
 автор: Unkind   (28.01.2008 в 19:22)   письмо автору
 
   для: Бамси   (28.01.2008 в 19:06)
 

А чем aaa, aab, aac, ... отличается от 001, 002, 003, ...?

   
 
 автор: Eugene77   (28.01.2008 в 20:45)   письмо автору
 
   для: Бамси   (28.01.2008 в 19:06)
 


<?
$a
='a|b|c';
$a=explode('|',$a);
foreach(
$a as $i){
    foreach(
$a as $j){
        foreach(
$a as $k){
            echo 
$i.$j.$k.'<br>';
        }
    }
}

   
 
 автор: Бамси   (28.01.2008 в 23:17)   письмо автору
 
   для: Eugene77   (28.01.2008 в 20:45)
 

Тут явно указана количество букв, нужно что бы менять размер строки можно было бы одной переменной.
$lenght = 1;
И тут ограничивается буквами abc. А надо например англисйкий алфавит.

   
 
 автор: retsoul   (28.01.2008 в 23:47)   письмо автору
 
   для: Бамси   (28.01.2008 в 23:17)
 

при полном английском алфавите сложность системы при таком алгоритме будет очень жестокой... :)
время выполнения скрипта будет очень большим при переборе

   
 
 автор: Саня   (28.01.2008 в 23:54)   письмо автору
 
   для: Бамси   (28.01.2008 в 19:06)
 

<?
for ( $i "aaa"$i <= "abb"$i++ )
  print 
$i."<br/>";

   
 
 автор: Бамси   (29.01.2008 в 16:25)   письмо автору
 
   для: Бамси   (28.01.2008 в 19:06)
 

Извените, ступил.
Нужен такой алгоритм который бы перебирал все буквы в слове...
Например слово "мир".
мри
ирм
рим
имр
..

   
 
 автор: Петр   (30.01.2008 в 14:05)   письмо автору
 
   для: Бамси   (29.01.2008 в 16:25)
 

Ответ вам уже дали, не знаю как он по производительности, но работает вполне правильно

<?
$a
='м|и|р'// Здесь ваше слово, через разделитель;
$a=explode('|',$a); // Разбиваем слово на буквы через указанный разделитель;
foreach($a as $i) {
 foreach(
$a as $j) {
  foreach(
$a as $k) {
   if ((
$i!=$j) and ($j!=$k) and ($i!=$k)) { // Если можно чтоб буквы повторялись, то уберите это условие;
    
echo $i.$j.$k.'<br>';
   }
  }
 }
}
?>

   
 
 автор: Бамси   (30.01.2008 в 17:59)   письмо автору
 
   для: Петр   (30.01.2008 в 14:05)
 

Тут только на 3 буквы, а если слово "корова".
Не буду же я каждый раз переписывать код.

   
 
 автор: Eugene77   (30.01.2008 в 21:09)   письмо автору
 
   для: Бамси   (30.01.2008 в 17:59)
 

<?php

$w 
'abc';
function 
rep($s$a$l){
    for(
$i 0$i strlen($s); $i++){
        if(
== strlen($s)) echo $a.$s.'<br>'
        
$a .= $s[$i];
        
$a.=rep(substr($s,0,$i).substr($s,$i+1),$a,$l);
        
$a=substr($a,0,$l-strlen($s));
    }
}
 
rep($w''strlen($w));
//
 
?>

   
 
 автор: Бамси   (31.01.2008 в 20:10)   письмо автору
 
   для: Eugene77   (30.01.2008 в 21:09)
 

Если например слово root (2 одинаковых буквы) то ответы будут повторяться.

   
 
 автор: divbyzero   (01.02.2008 в 01:19)   письмо автору
 
   для: Бамси   (31.01.2008 в 20:10)
 

Ну и что удалить повторения не так и сложно используй

<?
array_unique
() // 
?>


Как она работает поглядеть можна тут

   
 
 автор: Nemezis   (01.02.2008 в 10:31)   письмо автору
 
   для: Бамси   (31.01.2008 в 20:10)
 

После такого примера, сразу показалось, что вы брутите чей-то пасс :-).

   
 
 автор: mihdan   (01.02.2008 в 11:14)   письмо автору
 
   для: Nemezis   (01.02.2008 в 10:31)
 

Nemezis, после прочтения вопроса у меня тож появилась такая мысль.
Бамси, может вам в задачи сходить? Там был вроде брут.

   
 
 автор: Eugene77   (01.02.2008 в 18:52)   письмо автору
 
   для: mihdan   (01.02.2008 в 11:14)
 

Брутить на СИ надо - заметно эффективнее будет.
Да только болото это - засосёт ещё...

   
 
 автор: morkovkin   (04.02.2008 в 09:07)   письмо автору
 
   для: Eugene77   (01.02.2008 в 18:52)
 

хехе))

   
Rambler's Top100
вверх

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