主要内容
#by < Shiorko >
排列
定义:从n个不同元素中取出m个(m≤n)不同元素,按照一定的顺序排成一列,叫做从n个元素中取出m个元素的一个排列。
特殊情况:当m=n时,这个排列被称作全排列,即取出所有元素进行排列。
全排列个数:n个元素的全排列个数为n!(n的阶乘),即n×(n-1)×(n-2)×...×2×1。
排列枚举
定义:枚举所有元素的排列情况,即列出所有可能的排列。
计算限制:计算机1秒钟很难枚举超过12个元素的所有全排列。这是因为排列个数随元素数量n增长而快速增长(n!增长极快),例如:
10个元素的全排列有10!=3,628,800个
12个元素的全排列有12!=479,001,600个
13个元素的全排列有13!=6,227,020,800个
函数:
[
next_permutation(start, end)
函数按照字典序生成现有序列的下一个较大的序列,并将结果保存在原来的地址中
cout<< next_permutation(start, end) << endl; 若下一个序列存在,next_permutation() 返回真(true/1);否则返回假(false/0)
!该函数收纳于 C++ 标准库 < algorithm >中
判断下一序列是否存在:
while(next_permutation(start, end)) //如果存在则继续运行 否则结束循环
]
[
sort(start, end)
函数会将序列中的元素从小到大排序,并将排序后的结果保存在原来的地址中
该函数收纳于C++标准库< algorithm >中。
]