FAFU OJ 全排列

87 阅读1分钟

全排列

Time Limit:2000MSMemory Limit:65535KB
Total Submissions:425Accepted:150

Share

Description:

      对1-n的数进行全排列,例如n为2的时候,应该输出1 2,2 1。

Input:

只有一个整数n,其中n<=10.当n=0时答案为0。

Output:

1-n的全排列。

Sample Input:

3

Sample Output:

1 2 3

1 3 2

2 1 3

2 3 1

3 1 2

3 2 1

Source:

#include<stdio.h>
int n;
bool mark[105];
int stack[105],top;
void dfs()
{
	if(top==n)
	{
		for(int i=0;i<top;i++)
		{
			if(i==0)
			printf("%d",stack[i]);
			else
			printf(" %d",stack[i]);
		}
		printf("\n");
		return ;
	}
	for(int i=1;i<=n;i++)
		if(mark[i]==0)
		{
			mark[i]=1;
			stack[top++]=i;
			dfs();
			top--;
			mark[i]=0;
		}

}
int main()
{
	while(scanf("%d",&n)==1)
	{
		if(n==0)
		{
		printf("0\n");
		return 0;
		}
		else
		dfs();
        return 0;
	}
	
}


\

\