输入字符串个数
输入字符串
输出全排列
输出全排列个数
#include<iostream>
#include<cstring>
using namespace std;
int si=0;
bool check(string a, int k, int i)
{
if(i > k){ //排除 i ==k 也就是 允许自身交换
for(int j = k; j < i; ++j){
if(a[j] == a[i])
return false;
}
}
return true;
}
void pailie(char a[], int lock, int len) //lock为已经锁定的下标
{
void Swap(char a[], int x, int y);
if (lock == len - 1)
{
for (int i = 0; i < len; i++){
cout << a[i];
}
cout << endl;
si++;
return;
}
for (int i = lock; i < len; ++i)
{
if(check(a,lock,i)){
Swap(a, lock, i);
pailie(a, lock + 1, len);
Swap(a, i, lock);
}
}
}
void Swap(char a[], int x, int y)
{
char tmp = a[x];
a[x] = a[y];
a[y] = tmp;
}
int main()
{
char a[100];
int n;
cin>>n;
void pailie(char a[], int lock, int len);
while (cin >> a)
{
pailie(a, 0, n);
cout<<si;
}
return 0;
}
运行结果(懒得截图了)
4 输入的
acca输入的,下边是输出的
acca
acac
aacc
caca
caac
ccaa
6