D&C_全排列问题
问题描述:
给定一组数R={r1, r2, ... , rn},输出所有的全排列
算法思路:
将perm(R)递归定义如下,
当n=1,perm(R)=(r)
当n>1,perm(R)由(r1)perm(R1), (r2)perm(R2), ..., (rn)perm(Rn) 一起构成。
程序:
1 void perm(int lists[], int s, int e, int len) 2 { 3 if(s > e) return; 4 if(s == e) 5 { //careful:output one permutation
6 for(int i = e - len + 1; i <= e; i++) 7 cout<<lists[i]; 8 cout<<endl; 9 return; 10 } 11 for(int i = s; i <= e; i++) 12 { 13 swap(lists[s],lists[i]);//switch 14 perm(lists, s+1, e, len); 15 swap(lists[s],lists[i]);//careful 16 } 17 }

浙公网安备 33010602011771号