【枚举排列】字典序输出

来源:互联网 发布:央视网络电视台直播 编辑:程序博客网 时间:2024/05/29 14:40
//《算法竞赛入门经典》P117思考
#include<stdio.h>#include<stdlib.h>#define MAX 50//递归实现字典序排列 void print_permutation(int n,int *A,int cur)//n为元素数量,A为用来递归调用的数组,cur为数组标号{  int i,j;  if(cur==n)  {  for(i=0;i<n;i++)  printf("%d ",A[i]);  printf("\n");  }  else for(i=1;i<=n;i++) //在数组中尝试去填入不同的数字   {    int ok=1;    for(j=0;j<cur;j++)      if(A[j]==i) ok=0;//已经出现     if(ok)    {      A[cur]=i;      print_permutation(n,A,cur+1);//递归调用     }  }}int main(void){  int i,j;  int A[MAX];  int n;    scanf("%d",&n);  print_permutation(n,A,0);   return 0;}

0 0