社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
、
开始,遍历整个字符串,将第0个元素与第i个元素交换,假设后面的元素已经递归好,即permutation(a, k + 1, m);
最后要把元素交换回来,进行下一次交换
这个代码比较难理解
#include <iostream>
#include <cstring>
#define N 100
using namespace std;
void permutation(char* a, int k, int m)
{
int i, j;
if (k == m)
{
for (i = 0; i <= m; i++)
cout << a[i];
cout << endl;
}
else
{
for (j = k; j <= m; j++)
{
swap(a[j], a[k]);
permutation(a, k + 1, m);
swap(a[j], a[k]);
}
}
}
int main()
{
char a[N];
int n;
cin >> a;
n = strlen(a) - 1;
permutation(a, 0, n);
return 0;
}
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!