可输出a数组的所有排列,在跳出递归后再次交换两元素是关键
今年的蓝桥杯省赛C/C++ B组填空第二题要填的就是退出递归后的交换。
#include <stdio.h>
#include <cmath>
#include <algorithm>
#include <cstring>
#include <vector>
#include <functional>
#include <queue>
using namespace std;
void perm(int a[], int x, int y)
{
if(x==y)
{
for(int i=0; i<y; i++)
{
printf("%d", a[i]);
}
printf("\n");
}
else
for(int i=x; i<y; i++)
{
swap(a[i], a[x]);
perm(a, x+1, y);
swap(a[i], a[x]);
}
}
int main()
{
int a[]={0,1,2,3,4};
perm(a, 0, 5);
return 0;
}