lyyu1988 发表于 2013-1-26 13:32:48

排列组合算法

#include <stdio.h>int n = 0;void swap(int *a, int *b) {         int m;         m = *a;         *a = *b;         *b = m; }void perm(int list[], int k, int m) {         int i;         if(k > m)         {                  for(i = 0; i <= m; i++)                         printf("%d ", list);               printf("\n");               n++;         }         else         {               for(i = k; i <= m; i++)               {//交换i和k的值            swap(&list, &list);                         perm(list, k + 1, m);             //交换i和k的值,使数组还原            swap(&list, &list);               }         } } int main() {         int list[] = {1, 2, 3, 4};         perm(list, 0, 3);         printf("total:%d\n", n);         return 0; }
页: [1]
查看完整版本: 排列组合算法