c++实现数字的全排列

原创 2016年08月31日 11:44:17
#include <iostream>
#include <vector>
using namespace std;


void recursivePrint(vector<char> number,int length,int index)
{
        if(index == length - 1)
        {
                for(int i = 0 ; i < length; ++i)
                        cout << number[i] ;
                cout << endl;
                return;
        }
        for(int i = 0; i < 10; ++i)
        {
                number[index + 1] = i + '0';
                recursivePrint(number,length,index + 1); 
        }
}


void printFullSortNumbers(int n)
{
        if(n == 0)
                return ;
        vector<char> res(n+1,'0');
        for(int i = 0; i < 10; i ++) 
        {
                res[0] = i +'0';
                recursivePrint(res,n,0);
        }
}


int main()
{
        int a = 2;
        printFullSortNumbers(a);
        return 0;
}

第二种方法,其实跟上面类似


#include <iostream>
using namespace std;
void printRecurve(int a[],int len,int k)
{
        if(len  == k)
        {
                for(int i = 0; i <= len; ++i)
                        cout << a[i] ;
                cout <<endl;
        }
        else
        {
                for(int idx = k ; idx <= len; ++idx)
                {
                        swap(a[idx],a[k ]); 
                        printRecurve(a,len,k + 1); 
                        swap(a[idx],a[k]);
                }
        }
}
int main()
{
        int b[3] = {1,2,3};
        printRecurve(b,2,0);
        return 0;
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

c++实现全排列

  • 2013年05月08日 20:01
  • 15KB
  • 下载

n个整数全排列的递归实现(C++)

全排列是非常常用的一个小算法,下面是n个整数全排列的递归实现,使用的是C++ #include using namespace std; int n = 0; void swap(cha...
  • sunmc1204953974
  • sunmc1204953974
  • 2014年10月27日 09:58
  • 3652

c++字符串全排列递归法

网上关于字符串全排列的代码一大堆,总体而言分为递归法和非递归法两种实现。虽然递归法原理简单,代码简洁,但是我观察众多博客来看,没有把代码讲透,只有透过代码才能看清算法的本质。 问题:输入一字符串(...
  • zlhn55
  • zlhn55
  • 2017年08月14日 13:14
  • 428

【STL】C++ 全排列

C++全排列 # include "iostream" #include"algorithm" using namespace std; int main() {     int a[4];    ...
  • weixin_40516505
  • weixin_40516505
  • 2018年01月27日 16:27
  • 19

[C++]LeetCode: 115 Permutations (求一组数的全排列)

题目: Given a collection of numbers, return all possible permutations. For example, [1,2,3] have the...
  • cinderella_niu
  • cinderella_niu
  • 2015年01月20日 21:34
  • 1829

C++ 全排列和组合算法(递归)

全排列: 设待排列的数组为a[n],任意时刻将其分为0~s-1和s~n-1两端。 其中,0~s-1是已经选择的区间,s~n-1是待选择的区间,每次选择s~n-1的一个与s为的数交换 #include...
  • Kirk0316
  • Kirk0316
  • 2013年09月23日 18:02
  • 922

C/C++实现多个数的拼接(组合)成最大数字

面试的时候经常有一道题就是给你多个数,让你拼接或者组合成一个最大的数字,如687,68,239,9,689,拼接后最大的数字应该为968968768239,题目一看很容易使人想到用贪心算法,对齐后每次...
  • jediknight23
  • jediknight23
  • 2016年05月19日 23:42
  • 2048

c++计算组合数C(m,r)=m!/(r!*(m-r))

计算组合数C(m,r)=m!/(r!*(m-r)),其中m,r均为正整数,且m>r。
  • qikaihuting
  • qikaihuting
  • 2017年04月14日 11:23
  • 3867

组合求和(C++)

1、给定数字集合和目标数字,找出数字集合中唯一的组合,使得数字的加和等于目标数字(leetcode第39题) 2、给定数字集合和目标数字,找出数字集合中唯一的组合,使得数字的加和等于目标数字(集合...
  • zylmjy520
  • zylmjy520
  • 2016年06月18日 10:36
  • 450

生成全排列的c++函数

c++
  • aston5128
  • aston5128
  • 2016年12月14日 09:28
  • 305
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:c++实现数字的全排列
举报原因:
原因补充:

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