递归 输出全排列

来源:互联网 发布:node.js 微信 编辑:程序博客网 时间:2024/05/18 23:14

请编写程序输出前n个正整数的全排列(0),并通过9个测试用例(即n从1到9)观察n逐步增大时程序的运行时间。

输入格式:

输入给出正整数n<)。

输出格式:

输出1到n的全排列。每种排列占一行,数字间无空格。排列的输出顺序为字典序,即序列a1,a2,,an排在序列b1,b2,,bn之前,如果存在k使得, 并且 ak+1<bk+1

输入样例:

3

输出样例:

123132213231312

321

#include <stdio.h>int a[100];int visited[100];void p(int n,int len)//len表示排列的位置 {if(len==n)//递归出口 {for(int i=0;i<len;i++)printf("%d",a[i]);printf("\n");return;}for(int i=1;i<=n;i++){if(!visited[i]){a[len] = i;    visited[i] = 1;    p(n,len+1);visited[i] = 0;//第i次循环完成后,标记回复 }}}int main(){int n;scanf("%d",&n); p(n,0);return 0;}

原创粉丝点击