枚举排列

 //生成1~n的排列
void print_permutation(int n,int *a,int cur)
{
	int i,j;
	if(cur==n)   //递归边界
	{
		for(i=0;i<n;i++)
			printf("%d",a[i]);
		printf("\n");
	}
	else for(i=1;i<=n;i++)    //尝试在A[cur]中填各种整数i
	{
		int ok=1;
		for(j=0;j<cur;j++)
			if(a[j]==i)
				ok=0;         //如果i已经在a[0]~a[cur-1]出现过,则不能再选
		if(ok)
		{
			a[cur]=i;
			print_permutation(n,acur+1);    //递归调用
		}


	}
}

你可能感兴趣的:(枚举排列)