Advertisement

0002算法笔记——递归排列与Hanoi问题

阅读量:

递归的定义想必大家已经有所了解,此处不再赘述相关概念。接下来将介绍与递归相关的几个典型问题。

1、排列问题

假设R={r1,r2,...,rn}是需要进行排列操作的n个元素组成的集合,Ri=R-{ri}表示从R中移除元素ri后得到的新集合。对于集合X中的元素,其所有可能的排列方式可表示为Perm(X)。而在每个排列前添加前缀ri所形成的排列形式可记作(ri)Perm(X)。基于此,集合R的所有排列可以归纳如下:

当n=1时,Perm(R)的结果仅包含一个元素r,即集合中唯一的成员;

当n>1时,Perm(R)由(r1)Perm(R1),(r2)Perm(R2),(r3)Perm(R3),……,(rn)Perm(Rn)共同组成。

程序代码:

复制代码
 //2-4 排列问题

    
 #include "stdafx.h"
    
 #include <iostream>     
    
 using namespace std; 
    
  
    
 template <class Type>
    
 inline void Swap(Type &a,Type &b);
    
  
    
 template <class Type>
    
 void Perm(Type list[],int k,int m);
    
  

全部评论 (0)

还没有任何评论哟~