fork(2) download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. #define N 14
  6. void f(int p, int *a, int n) {
  7. int i;
  8. if (n == p) {
  9. for (i = 0; i < n; i++)
  10. printf("%c, ", a[i] + 'a');
  11. putchar('\n');
  12. } else {
  13. int *b;
  14. if ((b = malloc(sizeof(int) * n)) != 0) {
  15. for (i = 0; i < n; i++)
  16. if (a[i] < 0) {
  17. memcpy(b, a, sizeof(int) * n);
  18. b[i] = p;
  19. f(p + 1, b, n);
  20. }
  21. free(b);
  22. }
  23. }
  24. }
  25.  
  26. #define N 14
  27. int main(int argc, char *argv[]) {
  28. int *a, n, i;
  29. if (argc != 2) {
  30. usage:
  31. printf("usage: %s <num>\n", argv[0]);
  32. printf("1 < <num> < %d\n", N + 1);
  33. return 1;
  34. }
  35.  
  36. if ((n = atoi(argv[1])) <= 1 || n > N)
  37. goto usage;
  38. if ((a = malloc(sizeof(int) * n)) != 0) {
  39. for (i = 0; i < N; i++)
  40. a[i] = -1;
  41. f(0, a, n);
  42. free(a);
  43. }
  44. return 0;
  45. }
  46. /* end */
  47.  
Runtime error #stdin #stdout 0.01s 1720KB
stdin
Standard input is empty
stdout
usage: ./prog <num>
1 < <num> < 15