На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! правила раздела Алгоритмы
1. Помните, что название темы должно хоть как-то отражать ее содержимое (не создавайте темы с заголовком ПОМОГИТЕ, HELP и т.д.). Злоупотребление заглавными буквами в заголовках тем ЗАПРЕЩЕНО.
2. При создании темы постарайтесь, как можно более точно описать проблему, а не ограничиваться общими понятиями и определениями.
3. Приводимые фрагменты исходного кода старайтесь выделять тегами code.../code
4. Помните, чем подробнее Вы опишете свою проблему, тем быстрее получите вразумительный совет
5. Запрещено поднимать неактуальные темы (ПРИМЕР: запрещено отвечать на вопрос из серии "срочно надо", заданный в 2003 году)
6. И не забывайте о кнопочках TRANSLIT и РУССКАЯ КЛАВИАТУРА, если не можете писать в русской раскладке :)
Модераторы: Akina, shadeofgray
  
> По перебору. , Как перебрать все слова заданной длины, когда порядок букв не важен?
    Всегда было интересно, решил спросить. :)
      Аэтерос, например, так как показано в статье "Наечатать все последовательности данной длины для заданного алфавита" ... 8-)
        Генерируешь только упорядоченные последовательности букв. Можно это сделать например так

        ExpandedWrap disabled
          void f(int len,char c)
          {
                 if(len==k)вывод текущей строки и выход
                 for(char ci=c;ci<='z';ci++)
                 {      
                        str[len]=ci;
                        f(len+1,ci);
                 }
          }


        Начинается перебор вызовом f(0,'a').

        Добавлено
        andrew.virus, в этом случае 123 и 321 считаются разными, а нужно различающиеся только порядком считать одинаковыми
        Сообщение отредактировано: OpenGL -
          Цитата OpenGL @
          Генерируешь только упорядоченные последовательности букв.

          я так и подозревал, спасибо :)

          Добавлено
          А сколько всего таких последовательностей будет?
            Число сочетаний из количества букв в алфавите по длинне слова?
              Нет. Дело в том, что число сочетаний дает количество только тех строк, в которых нет повторяющихся символов. Для искомого количества наверняка существует формула, но проще наверное сосчитать это динамикой.
                OpenGL, ага. Так и называется эта формула "число сочетаний с повторениями".
                Можно вывести с помощью правил суммы и произведения.
                Можно посмотреть готовую: http://ru.wikipedia.org/wiki/Сочетание
                  Спасибо, я там и нашёл :D
                    Цитата OpenGL @
                    andrew.virus, в этом случае 123 и 321 считаются разными, а нужно различающиеся только порядком считать одинаковыми

                    НУ и что.

                    В итоге будут сгенирированы все нужные слова
                    1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                    0 пользователей:


                    Рейтинг@Mail.ru
                    [ Script execution time: 0,0786 ]   [ 14 queries used ]   [ Generated: 1.09.24, 01:34 GMT ]