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 }

 

posted @ 2014-08-14 20:23  hedgehog小子  阅读(186)  评论(0)    收藏  举报