2015-01-10 3 views
-7

Я программирования C++ и я хочу сделать это:Все перестановки, и найти наименьшее число с ++

Мой вход:

213 

Я хочу, чтобы создать все перестановки и генерировать наименьшее число. Как:

123 -> lowest number 
132 
231 
213 
312 
321 

я могу использовать, next_permutation (std library), но, что наиболее эффективный способ сделать это?

+0

Это бутылочная горка в вашей программе? Зачем вам нужно «эффективно»? И что вы подразумеваете под «эффективным»? Скорость? Вычислительные ресурсы? Размер кода? Что-то другое? –

+0

Да, стандартная библиотека, как правило, наиболее эффективный способ решения проблем, потому что она очень оптимизирована, и есть вероятность, что программисты, которые реализовали stdlib, намного более опытны, чем вы. Но в любом случае **, почему вы заботитесь о «эффективности» для 3-элементного списка? ** –

+1

Сортировка цифр. –

ответ

0

Не похоже, что Kerrek SB сказал, что вы можете просто отсортировать его и принять (по умолчанию по умолчанию).

std::vector<int> input = { 
    4, 3, 9, 1 
}; 
std::sort(std::begin(input), std::end(input)); 

Для получения дополнительной информации см: std::sort. Если вам действительно нужны все перестановки, вы можете использовать std::next_permutation на отсортированном входе, и он всегда будет первым.

+0

@ShauryaChats Какой номер? Это должно действительно работать: http://coliru.stacked-crooked.com/a/8f0644941576fef9 –

Смежные вопросы