#include<iostream>
#include<stdio.h>
#include<algorithm>
using namespace std;
int h[256]={0};
#define N 100
//char *indexss; //保存上一个排列的值(重复的排列是相邻的)
void quanpaiWithOutRepety(char a[],int len,int index)
{
char c='/0';
if(index==len)
{
//if(strcmp(indexss,a)!=0) cout<<a<<endl; //与上一个排列结果进行比较,如果不相同,就输出。
// strcpy(indexss,a); //保存当前排列
cout<<a<<endl;
}
else
{
for(int i=index;i<len;i++)
{
//if(i!=index&&a[i]==a[index]&&h[a[i]]>1)
// continue;
// else if(i!=index&&a[i]==a[index]&&h[a[i]]<=1)
// h[a[i]]++;
if(c!=a[i])
{
c=a[i];
swap(a[i],a[index]);
quanpaiWithOutRepety(a,len,index+1);
swap(a[i],a[index]);
}
}
}
}
int main()
{
char a[]={'a','b','c','\0'};
int len=sizeof(a)/sizeof(char)-1;
sort(a,a+len);
//indexss=(char*)malloc(N*sizeof(char));
quanpaiWithOutRepety(a,len,0);
system("pause");
return 0;
}
#include<stdio.h>
#include<algorithm>
using namespace std;
int h[256]={0};
#define N 100
//char *indexss; //保存上一个排列的值(重复的排列是相邻的)
void quanpaiWithOutRepety(char a[],int len,int index)
{
char c='/0';
if(index==len)
{
//if(strcmp(indexss,a)!=0) cout<<a<<endl; //与上一个排列结果进行比较,如果不相同,就输出。
// strcpy(indexss,a); //保存当前排列
cout<<a<<endl;
}
else
{
for(int i=index;i<len;i++)
{
//if(i!=index&&a[i]==a[index]&&h[a[i]]>1)
// continue;
// else if(i!=index&&a[i]==a[index]&&h[a[i]]<=1)
// h[a[i]]++;
if(c!=a[i])
{
c=a[i];
swap(a[i],a[index]);
quanpaiWithOutRepety(a,len,index+1);
swap(a[i],a[index]);
}
}
}
}
int main()
{
char a[]={'a','b','c','\0'};
int len=sizeof(a)/sizeof(char)-1;
sort(a,a+len);
//indexss=(char*)malloc(N*sizeof(char));
quanpaiWithOutRepety(a,len,0);
system("pause");
return 0;
}