- #include <stdio.h>
- #include <stdlib.h>
- #define MAXSIZE 20
- #define ROTATE(p) {int i,temp; /
- temp = perm[p]; /
- for (i = p - 1; i >= 0; --i) /
- perm[i + 1] = perm[i]; /
- perm[0] = temp; /
- }
- int main()
- {
- int perm[MAXSIZE];
- int position;
- int n;
- int i;
- char line[100];
- printf("/nPermutation by rotation Method");
- printf("/n==============================");
- printf("/n/nNumber of Elements -->");
- gets(line);
- n = atoi(line);
- for (i = 0; i < n; ++i)
- {
- perm[i] = i + 1;
- }
- position = n - 1;
- while (position != 0)
- {
- printf("/n");
- for (i = 0; i < n; ++i)
- {
- printf("%d ", perm[i]);
- }
- position = n - 1;
- ROTATE(position);
- while (perm[position] == position + 1 && position != 0)
- {
- --position;
- ROTATE(position);
- }
- }
- }