29
правок
Изменения
→Перестановки
'''function''' permutation2num(a: '''list <int>''')
numOfPermutation = 0
'''for''' i = 1 '''to''' n '''do''' '' <font color=green>// <tex>n </tex> - количество элементов в перестановке''</font> '''for''' j = 1 '''to''' a[i] - 1 '''do''' '' <font color=green>// перебираем элементэлементы, лексикографически меньший меньшие нашего, который которые может могут стоять на <tex>i</tex>-м месте </font> '''if''' was[j] == false '' <font color=green>// если элемент <tex>j </tex> ранее не был использован</font> '''then''' numOfPermutation += P[n - i] '' <font color=green>// все перестановки с префиксом длиной <tex>i-1 </tex> равным нашему, и <tex>i</tex>-й элемент у которых </font> '' <font color=green>меньше нашего в лексикографическом порядке, идут раньше данной перестановки </font> was[a[i]] = true '' <font color=green>// <tex>i</tex>-й элемент использован </font>
'''return''' numOfPermutation