#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define max 20
int hashtable[max]={0};//从hashtable中抽取未被采用的最小坐标
int a[max];//用于存放待输出数组
void GenerateA(int index,int n)//index为当前需要确认的数组元素,n为需要排列是元素个数
{
if(index==n+1)
{//数组a的全部元素已经确定,将数组打印出来
for(int i=1;i<=n;i++)
{
printf("%d",a[i]);
}
printf("\n");
}
else
{//未排序完成
for(int j=1;j<=n;j++)
{//检查1-n哪个元素没有使用
if(hashtable[j]==0)
{//如果该元素未被使用,那么就作为当前a[index]的元素
a[index]=j;
hashtable[j]=1;
GenerateA(index+1,n);
hashtable[j]=0;
}
}
}
}
int main()
{
GenerateA(1,3);
}
递归解决全排序(字典序)
最新推荐文章于 2022-02-23 18:10:59 发布