1 #include2 using namespace std; 3 template void print(T* a, int len) 4 { 5 if(a == NULL) 6 return; 7 for(int i = 0; i < len; i++) 8 cout << a[i] << " "; 9 cout << endl;10 }11 template void swap(T* a, T* b)12 {13 T tmp = *a;14 *a=*b;15 *b=tmp;16 }17 template void permutation(T* a,int k,int len)18 {19 if(k >= len)//k代表数组的下标,len代表数组的长度,所以k>=len时就该输出了。20 {21 print(a,len);22 }23 for(int i = k; i < len; i++)24 {25 swap(&a[k],&a[i]);26 permutation(a,k+1,len);27 swap(&a[k],&a[i]);28 }29 }30 int main()31 {32 int arr[] = { 1,2,3,4};33 //char arr[] = "123";34 int len = sizeof(arr) / sizeof(arr[0]);35 if(arr[len-1] == '\0')36 len-=1;37 permutation(arr,0,len);38 return 0;39 }
对数组元素的全排列,递归实现。
posted on 2013-05-04 11:03 阅读( ...) 评论( ...)