一、字典序法
1) 从序列P的右端开始向左扫描,直至找到第一个比其右边数字小的数字,即
。
2) 从右边找出所有比
大的数中最小的数字
,即
。
3) 交换与
。
4) 将右边的序列翻转,即可得到字典序的下一个排列。
5) 重复上面的步骤,直至得到字典序最大的排列,即左边数字比右边的大的降序排列。
//字典序法
void dictionary(int length){
int * data = (int *)malloc(sizeof(int) * length);
int index;
for (index = 0; index < length; ++index)
data[index] = index + 1;
FILE * fp = fopen("dictionary.txt", "w");
print