首页 > 其他 > 详细

基本算法——全排列

时间:2014-04-23 15:37:21      阅读:521      评论:0      收藏:0      [点我收藏+]

对n个数进行全排列,有n!种排列方式。这里我们使用递归方式处理,将问题切割为较小的单元进行排列组合。

例如1 2 3 4的排列可以分为1 [2 3 4],2[1 3 4],3[1 2 4],4[1 2 3]进行排列。即每一个元素都当一次首位,然后剩余的元素再递归进行全排列。

第0层      第1层     第2层 ...

1234      1 2 3 4    继续将右边2 3 4进行递归处理 ...
      2 1 3 4      继续将右边1 3 4进行递归处理 ...
      3 1 2 4      继续将右边1 2 4进行递归处理 ...
      4 1 2 3      继续将右边1 2 3进行递归处理 ...

bubuko.com,布布扣
    vector<vector<int> > ans;
    
    void permutation(vector<int> &a, int begin, int end) 
  {
if (begin==end) { ans.push_back(a); return; } else { int i = begin; for (; i <= end ; ++i) { swap(a[i], a[begin]); permutation(a, begin+1, end); swap(a[i], a[begin]); } } }
bubuko.com,布布扣

 

基本算法——全排列,布布扣,bubuko.com

基本算法——全排列

原文:http://www.cnblogs.com/chenbjin/p/3681457.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!