Школа программиста

Забыли пароль?
[задачи] [курсы] [олимпиады] [регистрация]
Логин:   Пароль:    
Скрыть меню
О школе
Правила
Олимпиады
Фотоальбом
Гостевая
Форум
Архив олимпиад
Архив задач
Состояние системы
Рейтинг
Курсы
Новичкам
Работа в системе
Алгоритмы
Курсы ККДП
Дистрибутивы
Ссылки

HotLog


 
Вернуться
Тема: Полейте грязью мой next_permutation()
1
  1  Беляев Сергей Николаевич, 28 марта 2019 г. 7:48:05
      Слишком медленно. Можно за O(n). Сортировку можно заменить разворотом. И почему merge_sort? Простой sort эффективнее и по времени и по памяти работает. Достаточно грязи? :)
  2  Федосов Ян Русланович, 28 марта 2019 г. 7:31:24
      Чёткий permutation за nlogn
  3  Федосов Ян Русланович, 28 марта 2019 г. 7:31:07
      bool ya_permutation(int* p,int n){
for(int i = n-1; i>=1; --i){
if(p[i]<p[i+1]){
int ind, zn = 1000000000;
for(int j = i+1; j<=n; ++j){
if(p[j]<zn&&p[j]>p[i]) ind = j, zn = p[j];
}
p[i]^=p[ind]^=p[i]^=p[ind];
merge_sort(i+1,n);
return 0;
}
}
return 1;
}
1

Чтобы оставить сообщение необходимо зарегистрироваться и авторизоваться!

Красноярский краевой Дворец пионеров, (c)2006 - 2019, E-mail: admin@acmp.ru