Мой Kbyte.Ru
Рассылка Kbyte.Ru
Группы на Kbyte.Ru
Партнеры Kbyte.Ru
Реклама
Сделано руками
Сделано руками
> Исходные коды - Гари Стаффорд -

C# - Строки

Все примеры / Строки

Перебор всех комбинаций строк

Автор: Гари Стаффорд | добавлено: 30.01.2012, 15:10 | просмотров: 10493 (1+) | комментариев: 1 | рейтинг: *x7
Небольшой класс, который позволяет перебрать все возможные комбинации заданного диапазона символов.

Код

class Algorithms
{
  private int elementLevel = -1;
  private int numberOfElements;
  private int[] permutationValue = new int[0];

  private char[] inputSet;
  public char[] InputSet
  {
    get { return inputSet; }
    set { inputSet = value; }
  }

  private int permutationCount = 0;
  public int PermutationCount
  {
    get { return permutationCount; }
    set { permutationCount = value; }
  }

  public char[] MakeCharArray(string InputString)
  {
    char[] charString = InputString.ToCharArray();
    Array.Resize(ref permutationValue, charString.Length);
    numberOfElements = charString.Length;
    return charString;
  }

  /// <summary>
  /// Recursive Algorithm Source:
  /// A. Bogomolny, Counting And Listing All Permutations from Interactive Mathematics Miscellany and Puzzles
  /// http://www.cut-the-knot.org/do_you_know/AllPerm.shtml, Accessed 11 June 2009
  /// </summary>
  /// <param name="k"></param>
  public void Recursion(int k)
  {
    elementLevel++;
    permutationValue.SetValue(elementLevel, k);

    if (elementLevel == numberOfElements)
    {
      OutputPermutation(permutationValue);
    }
    else
    {
      for (int i = 0; i < numberOfElements; i++)
      {
        if (permutationValue[i] == 0)
        {
          Recursion(i);
        }
      }
    }
    elementLevel--;
    permutationValue.SetValue(0, k);
  }

  /// <summary>
  /// Code Source (AddItem()):
  /// A. Bogomolny, Counting And Listing All Permutations from Interactive Mathematics Miscellany and Puzzles
  /// http://www.cut-the-knot.org/do_you_know/AllPerm.shtml, Accessed 11 June 2009
  /// </summary>
  /// <param name="value"></param>
  private void OutputPermutation(int[] value)
  {
    foreach (int i in value)
    {
      Console.Write(inputSet.GetValue(i - 1));
    }
    Console.WriteLine();
    PermutationCount++;
  }
}
Файлы PasswordRecovery.zip (6,75 Кб)
Об авторе

Гари Стаффорд

Программист, разработчик, архитектор и проект-менеджер. Гарри специализируется в области разработки на C#, Visual Basic .NET, ASP .NET, JavaScript и SQL Server.
Проживает в США.
Гари Стаффорд
Последние комментарии (всего: 1)

Добавлять комментарии могут только зарегистрированные пользователи сайта.
Если у Вас уже есть учетная запись на Kbyte.Ru, пройдите процедуру авторизации OpenID.
Если Вы еще не зарегистрированы на Kbyte.Ru - зарегистрируйтесь.

Плохенький алгоритм, еще доделывать и доделывать) Если ввести 111, то выдаст 6 комбинаций из единиц)
Авторизация
 
OpenID
Зарегистрируйся и получи 10% скидку на добавление своего сайта в каталоги! Подробнее »
Поиск по сайту
Люди на Kbyte.Ru
Реклама
Счетчики