C3_02
排列组合
2026年05月15日
主要内容
#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 >中。 ]