对数组元素进行枚举排列

/*全排列 输入元素个数n,然后输入具体元素,对元素进行枚举排列*/


#include <stdio.h>
#define MAX 100
void print_permutation(int n,int *A,int cur)
{
	int i,j,ok;
	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
		{
			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,A,cur+1); //递归调用
			}
		}
}
void main()
{
	int s[MAX]={0},n,i;
	scanf("%d",&n);
	for(i=0;i<n;i++)
		scanf("%d",&s[i]);
	printf("\n");
	print_permutation(n,s,0);
}

 结果: 

posted @ 2012-05-22 17:34  不错的了  阅读(611)  评论(0)    收藏  举报