全排列问题

题目描述

给定一个整数 n,将数字 1n 排成一排,将会有很多种排列方法。

请按照字典序将所有的排列方法输出。

输入格式

共一行,包含一个整数 n

输出格式

按字典序输出所有排列方案,每个方案占一行。

数据范围

1n8

输入样例

3

输出样例

1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1

模板

#include <iostream>
using namespace std;

int n, a[20];
bool flag[20];

void dfs(int step)
{
	if (step > n)
	{
		for (int i = 1; i <= n; i++)	
			cout << a[i] << " ";
		cout << endl;
		return;
	}
	for (int i = 1; i <= n; i++)
	{
		if(flag[i] == 1)
		{
			continue;
		}
		flag[i] = 1;
		a[step] = i;
		dfs (step + 1);
		flag[i] = 0;
	}
}

int main()
{
	cin >> n;
	dfs(1);
	return 0;
}