问题描述
本题要求输入指定序列,随机出栈后输出所有的出栈顺序,比如,输入[a b c],则可能的出栈顺序有5种:
- [a b c]
- [a c b]
- [b a c]
- [b c a]
- [c b a]
小伙伴们需要自取,有帮助的话可以点个赞~
注:本文中提供的代码均为完整代码,放入C++工程后可直接运行。
代码实现
#include <iostream>
#include <cstring>
using namespace std;
int flag;
void perm(char a[], int l, int r)
{
int x, y, z;
if (l == r)
{
flag = 1;
for (x = 0; x < r - 1; x++)
{
for (y = x + 1; y < r; y++)
{
for (z = y + 1; z < r + 1; z++)
{
if (a[y] < a[z] && a[z] < a[x])
{
flag = 0;
}
}
}
}
if (flag)
{
cout << a << endl;
}
}
for (int i = l; i <= r; i++)
{
int temp = a[i];
a[i] = a[l];
a[l] = temp;
perm(a, l + 1, r);
a[l] = a[i];
a[i] = temp;
}
}
int main()
{
char a[20];
cin >> a;
cout << endl;
perm(a, 0, strlen(a) - 1);
system("pause");
return 0;
}