您的位置:首页 > 编程语言 > C语言/C++

c++实现数字的全排列

2016-08-31 11:44 106 查看
#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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: