正文

PERMUT_R.C(转载)2006-06-12 09:11:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/tankboy/15751.html

分享到:

/* ------------------------------------------------------ *//* PROGRAM permutation by rotation :                      *//*    Give an integer n, this program generates all       *//* possible permutations by using rotation operations.    *//*                                                        *//* Copyright Ching-Kuang Shene               July/08/1989 *//* ------------------------------------------------------ */ #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;            \                    } void main(void){     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++)  /* initialize to 1,2,...,n  */          perm[i] = i + 1;      position = n - 1;                while (position != 0) {  /* if still have positions..*/          printf("\n");       /* display result           */          for (i = 0; i < n; i++)               printf("%d ", perm[i]);           position = n - 1;   /* starts from the last pos */          ROTATE(position);   /* rotate them.             */          while (perm[position]==position+1 && position!=0) {               position--;    /* if last pos are equal and*/               ROTATE(position); /* not zero, rotate again*/          }     }}

阅读(1861) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册