Permutations—回溯法求解

原创 2015年11月19日 15:35:15

  题目详细信息请参考我之前写的方法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;
}

总结
  运行结果如下:

这里写图片描述

版权声明:本文为博主原创文章,未经博主允许不得转载。如果转载一定要通知博主哦~~

【LeetCode】 Permutations 排列生成算法之字典序法

字典序排序生成算法 字典序法就是按照字典排序的思想逐一产生所有排列。 例如,由1,2,3,4组成的所有排列,从小到大的依次为: 1234, 1243, 1324, 1342, 1423, 14...
  • ljiabin
  • ljiabin
  • 2015年04月08日 17:31
  • 4292

回溯法---->图的着色问题

图的着色问题 1、问题描述 图的m-着色判定问题——给定无向连通图G和m种不同的颜色。用这些颜色为图G的各顶点着色,每个顶点着一种颜色,是否有一种着色法使G中任意相邻的2个顶点着不同颜色? 图的...
  • ncepustrong
  • ncepustrong
  • 2013年05月16日 10:12
  • 1605

回溯法解旅行商问题(TSP)

回溯法解旅行商问题(TSP) 旅行商问题,常被成为旅行推销员问题,是指一名推销员要拜访多个地点,如何找到再拜访每个地点一次后再回到起点的最短路径. 进一步的抽象,可以转化为图论的问题,将每个...
  • sushauai
  • sushauai
  • 2015年12月06日 18:39
  • 5899

用回溯法求解0—1背包问题,并输出问题的最优解

问题:给定n种物品和一背包。物品i的重量是Wi,其价值为Vi,背包的容量是c,问应如何选择装入背包中的物品,使得装入背包中物品的总价值最大。 0—1背包问题是一个子集选取问题,适合于用子集树表示0—...
  • Iamduoluo
  • Iamduoluo
  • 2011年12月12日 09:21
  • 3875

n后问题————回溯法求解(递归与非递归)

N后问题要求在一个n*n格的棋盘上放置n个皇后,使得他们彼此不受攻击。按照国际象棋的规则,一个皇后可以攻击与之处在同一行或同一列或同一斜线上的其他任何棋子。因此,n后问题等价于要求在一个n*n的棋盘上...
  • qq_36953135
  • qq_36953135
  • 2017年08月02日 17:11
  • 151

POJ2369————Permutations(置换群,数论)

Permutations Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 3094   A...
  • say_c_box
  • say_c_box
  • 2017年03月03日 17:20
  • 118

高斯—赛德尔迭代法求解方程组

  • 2015年09月29日 21:32
  • 223KB
  • 下载

leetcode 47. Permutations II-排列|回溯算法

原题链接:47. Permutations II 【思路1-Java】 这题是leetcode 46. Permutations-全排列|回溯|递归|非递归思路1延伸,每次交换 nums 中的两个...
  • happyaaaaaaaaaaa
  • happyaaaaaaaaaaa
  • 2016年06月12日 15:11
  • 1748

分别用雅可比(Jacobi)迭代法和高斯—塞德尔(Gauss—Seidel)迭代法求解线性方程组

算法介绍(迭代法介绍): 代码C语言实现; # include # include # define N 6 /* *使用雅可比迭代法和高斯-赛德尔迭代法 求解线性方程组 ...
  • yyywww666
  • yyywww666
  • 2015年01月17日 14:26
  • 4278

【LeetCode】 Permutations 排列生成算法之字典序法

字典序排序生成算法 字典序法就是按照字典排序的思想逐一产生所有排列。 例如,由1,2,3,4组成的所有排列,从小到大的依次为: 1234, 1243, 1324, 1342, 1423, 14...
  • ljiabin
  • ljiabin
  • 2015年04月08日 17:31
  • 4292
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Permutations—回溯法求解
举报原因:
原因补充:

(最多只允许输入30个字)