很多地方都遇过排列组合,比如计算问题的规模,数据的大小,占用磁盘空间多少等。
原理部分借鉴网上一篇文章,道理已经说的很清楚就不重复了。
(1) 全排列:
全排列表示把集合中元素的所有按照一定的顺序排列起来,使用P(n, n) = n!表示n个元素全排列的个数。
例如:{1, 2, 3}的全排列为:
123;132;
213;231;
312;321;
共6个,即3!=3*2*1=6。
这个是怎么算出来的呢?
首先取一个元素,例如取出了1,那么就还剩下{2, 3}。
然后再从剩下的集合中取出一个元素,例如取出2,那么还剩下{3}。
以此类推,把所有可能的情况取一遍,就是全排列了,如图:
#include
#include
#include
using namespace std;
#define MAX_SIZE 5
void swap(vector &lst, int i, int j)
{
int tmp = lst[i];</