数组全排列
#include <iostream>
using namespace std;
void perm(int a[], int k, int n)
{
if (k < n-1)
{
int i, t;
for (i=k; i<n; i++)
{
t = a[k];
a[k] = a[i];
a[i] = t;
perm(a, k+1, n);
t = a[k];
a[k] = a[i];
a[i] = t;
}
}
else
{
int i;
for (i=0; i<n; i++)
{
cout<<a[i]<<'\t';
}
cout<<endl;
}
}
int main(void)
{
int a[4] = {1,2,3,4};
perm(a, 0, 4);
return 0;
}
输出结果:
1 2 3 4
1 2 4 3
1 3 2 4
1 3 4 2
1 4 3 2
1 4 2 3
2 1 3 4
2 1 4 3
2 3 1 4
2 3 4 1
2 4 3 1
2 4 1 3
3 2 1 4
3 2 4 1
3 1 2 4
3 1 4 2
3 4 1 2
3 4 2 1
4 2 3 1
4 2 1 3
4 3 2 1
4 3 1 2
4 1 3 2
4 1 2 3