Permutations—回溯法求解

  题目详细信息请参考我之前写的方法Permutations

分析
  让每个元素都能成为某种排序的第一个元素。

C++代码

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;

void permutation(vector<int> &num, int begin, vector<vector<int> > &ans);

vector<vector<int> > permute(vector<int> &num) {
    vector<vector<int> > ans;
    permutation(num, 0, ans);
    return ans;
}

void permutation(vector<int> &num, int begin, vector<vector<int> > &ans) {
    if (begin >= num.size()) {
        ans.push_back(num);
        return;
    }
    // every number chosen to be the begin once
    for (int i = begin; i < num.size(); ++i) {
        swap(num[begin], num[i]);
        permutation(num, begin+1, ans);
        swap(num[begin], num[i]);
    }
}

int main() {
    int a[] = {1,2,4,6};
    vector<int> nums(a,a+4);

    vector<vector<int> > res = permute(nums);
    cout<<"["<<endl;
    for(int i=0;i<res.size();i++) {
        cout<<" [";
        for(int j=0;j<res[i].size();j++) {
            cout<<" "<<res[i][j];
        }
        cout<<" ]"<<endl;
    }
    cout<<"]"<<endl;
    return 0;
}

总结
  运行结果如下:

这里写图片描述

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。如果转载一定要通知博主哦~~ https://blog.csdn.net/oNever_say_love/article/details/49928491
文章标签: 回溯法 全排序
想对作者说点什么? 我来说一句

最优装载回溯法求解........

2009年06月01日 1KB 下载

没有更多推荐了,返回首页

不良信息举报

Permutations—回溯法求解

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭