数字排列问题
题目描述
列出所有从数字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; } |
Subscribe