LINUX.ORG.RU

История изменений

Исправление ya-betmen, (текущая версия) :

По сути оптимизация перебора.

Если я правильно понял то есть 2 операции (a и b), каждая из них рождает перестановку строки. Требуется найти цепочку перестановок S0 в Sn.

  1. Создаём множество перестановок {S0} (пока там только одна перестановка S0) и пустое пока множество {U}
  2. Применяем ко всем элементам множества {S0} операции a и b, результатом становится множество {S1}
  3. Если среди элементов {S1} есть Sn значит цепочка операций найдена (порядок операций естественно нужно хранить). Всё.
  4. Считаем число элементов {U}
  5. Добавляем {S1} в {U}
  6. Считаем число элементов {U}, если оно не изменилось - задача не имеет решения. Всё
  7. Повторяем начиная с п2 для {S1}

Лень вникать в условия задачи, это первый способ который пришёл в голову.

Исходная версия ya-betmen, :

По сути оптимизация перебора.

Если я правильно понял то есть 2 операции (a и b), каждая из них рождает перестановку строки. Требуется найти цепочку перестановок S0 в Sn.

  1. Создаём множество перестановок {S0} (пока там только одна перестановка S0) и пустое пока множество {U}
  2. Применяем ко всем элементам множества {S0} операции a и b, результатом становится множество {S1}
  3. Если среди элементов {S1} есть Sn значит цепочка операций найдена (порядок операций естественно нужно хранить). Всё.
  4. Считаем число элементов {U}
  5. Добавляем {S1} в {U}
  6. Считаем число элементов {U}, если оно не изменилось - задача не имеет решения. Всё
  7. Повторяем начиная с п2 для {S1}