#include <iostream>
using namespace std;
/***********全排列***************/
void fullArray(char* arr,int len,int n){
if(arr == NULL || len < 0)
return;
if(n == len){
for(int i = 0;i < len;i++)
cout << arr[i];
cout << endl;
return;
}
for(int i = n;i < len;i++){
if(n != i && arr[n] == arr[i])
continue;
swap(arr[n],arr[i]);
fullArray(arr,len,n+1);
swap(arr[n],arr[i]);
}
}
/*********全排列的下一个**********/
void nextFullArray(char* arr,int len){
if(arr == NULL || len < 0)
return;
int firstSmall = len-2;
int firstBig = len-1;
while(firstSmall >= 0 && arr[firstSmall+1] < arr[firstSmall])
firstSmall--;
while(arr[firstBig] < arr[firstSmall])
firstBig--;
swap(arr[firstSmall],arr[firstBig]);
int Begin = firstSmall + 1,End = len-1;
while(Begin < End)
swap(arr[Begin++],arr[End--]);
for(int i = 0;i < len;i++)
cout << arr[i];
cout << endl;
}
int main(){
char arr[] = "abcdef";
// fullArray(arr,sizeof(arr)-1,0);
nextFullArray(arr,sizeof(arr)-1);
return 0;
}
面试:全排列问题系列
最新推荐文章于 2024-09-13 17:53:38 发布