题目描述
一自然数N,设N为3,则关于N的字典序排列为123,132,213,231,312,321。对于一个自然数N(1<= N <= 9 ) , 你要做的便是生成它的字典序排列。
输入
自然数N。
输出
输出对应于N的字典序排列,每个排列占一行。
样例输入 Copy
3
样例输出 Copy
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
提示
注意:每个数后有空格
可以参考 pku 1833
#include<iostream>
using namespace std;
int flag[20] = { 0 };
int store[10] = { 0 };
int n;
bool judge(int n)
{
if (flag[n] == 0)return true;
return false;
}
void dns(int k)//第K个数
{
if (k == n + 1)
for (int i = 1; i < k; i++)
{
cout << store[i] << ' ';
if (i == n)cout << endl;
}
else
{
for (int j = 1; j <= n; j++)
{
if (judge(j))
{
store[k] = j;
flag[j] = 1;
dns(k + 1);
flag[j] = 0;
}
}
}
}
int main()
{
while (cin >> n)
{
dns(1);
}
return 0;
}