C++利用递归求排列的代码
求出N个不同元素的所有排列方式,代码中设定10个元素分别是0到9,可以求出这十个元素的所有排列
#include <iostream>
using namespace std;
int arr[10];
void perm(int list[], int k, int m);
void swap(int &a, int &b);
int main(int argc, char* argv[])
{
int j;
for(j=0; j<10; j++)
arr[j] = j;
perm(arr, 0, 2);
return 0;
}
void perm(int list[], int k, int m)
{
int i;
if(k == m)
{
for(i=0; i<=m; i++)
cout<<list[i];
cout<<endl;
}
else
{
for(i=k; i<=m; i++)
{
swap(list[k], list[i]);
perm(list, k+1, m);
swap(list[k], list[i]);
}
}
}
void swap(int &a, int &b)
{
int t = a;
a = b;
b = t;
}