数字排列问题
题目描述
列出所有从数字1到数字n的连续自然数的排列,要求所产生的任一数字序列中不允许出现重复的数字。
输入
输入:n(1<=n<=9)
输出
由1~ n组成的所有不重复的数字序列,每行一个序列。输出的每个数字均占5位场宽。
样例输入
3
样例输出
1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1
代码
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
#include<cstdio>
#include<iostream>
using namespace std;
int a[10],used[10];
int n;
void print()
{
for(int i=1;i<=n;i++)
{
printf("%5d",a[i]);
}
cout<<endl;
}
void search(int k)
{
for(int i=1;i<=n;i++)
{
if(used[i]==0){used[i]=1;a[k]=i;search(k+1);used[i]=0;}
}
if(k==n)print();
}
int main()
{
cin>>n;
search(1);
return 0;
}
|

浙公网安备 33010602011771号