7.2.1 生成1~n的排列
#include<stdio.h> int num[20],n; void Print(int n,int *a,int cur) { int i,j,flag; if(cur == n+1)//递归边界 { for( i = 1; i < cur; i ++) printf("%d ",a[i]); printf("\n"); } else { for( i = 1; i <= n; i ++) { flag = 1; for( j = 1; j < cur; j ++) if(a[j] == i)//如果i已经在a[1..cur-1]出现过,则舍弃 flag = 0; if(flag) { a[j] = i; Print(n,a,cur+1);//递归调用 } } } } int main() { scanf("%d",&n); Print(n,num,1); return 0; }
时间: 2024-11-03 06:04:28