基于交换的原理,实现输出目标字符串的全排列。
class sort_combine
{
private:
char *str;
public:
sort_combine();
sort_combine(char *str);
~sort_combine();
void swap(int i);
void sort(int k,int N);
};
```cpp
#include "sort_combine.h"
#include<iostream>
using namespace std;
sort_combine::sort_combine()
{
}
sort_combine::sort_combine(char* str1)
{
str =str1;
}
sort_combine::~sort_combine()
{
}
void sort_combine::swap(int i)
{
char temp2;
temp2 = *(str+i-1);
*(str+i-1)= *(str+i);
*(str+i)= temp2;
}
void sort_combine::sort(int k,int N)
{
for (int i = k-1; i > 0; i--)
{
swap(i);
}
for (int i = 0; i < N; i++)
{
for (int j = 2; j <= N; j++)
{
swap(j);
for (int k = 0; k <=N; k++)
{
cout << *(str + k);
}
cout<< endl;
}
}
}
#include<iostream>
#include<math.h>
#include "sort_combine.h"
#include <windows.h>
using namespace std;
void swap(char* p1, char* p2);//两数交换
int main()
{
//求p排列组合
char a[20];
cout << "输入数据长度" << endl;
cin >> length;
const int N = length-1;
cout << "输入数据" << endl;
for (int i = 0; i < length; i++)
{
cin>>a[i];
}
sort_combine c1(a);
for (int i = 1; i <=length; i++)
{
c1.sort(i, N);
}
return 0;
}
转载:https://blog.csdn.net/TOMJJY/article/details/102005116
查看评论