#include <stdio.h> #include <stdlib.h> void pailie(int *a, int n) { static int m = -1; int i, j; m++; if (m == n) //如果是最后一个数则输出该排列 { for (i = 0; i < n; i++) printf("%d ", a[i]); printf("\n"); return; } for (i = 1; i <= n; i++) { for (j = 0; j < m; j++) { if (a[j] == i) break; } if (j < m) continue; //如果与前面的数字重复则判断下一个 a[m] = i; pailie(a, n); m--; //不要忘记将标记减1 } } void main() { int n; int *a; printf("请输入n:"); scanf("%d", &n); printf("\n排列结果如下:\n"); a = new int[n]; pailie(a, n); delete[] a; }
打印N个数的全排列
猜你喜欢
转载自blog.csdn.net/tiger1334/article/details/48296779
今日推荐
周排行