有重复元素的全排列

题目描述
集合S中有n个元素,其中的元素可能重复,设计一个算法,计算出S的不同排列字符全部由小写字母组成,
输出按照字典序输出
n <= 9
输入
第一行一个整数n
第二行一个字符串包含n个字母
输出
所有的全排列
最后一行输出个数
样例输入

4 aacc

样例输出
aacc acac acca caac caca ccaa 6

【有重复元素的全排列】代码如下
#include #include using namespace std; int main(){ int len; int count=0; char str[9]; scanf("%d",&len); cin>>str; int i; int j; int flag=1; for(i=0; i0){ swap(str[i],str[j]); } } } while(flag){ for(int k=0; k=str[i+1]; i--); if(i<0){ printf("%d\n",count); flag=0; }for(j=len-1; j>i && str[j]<=str[i]; j--); swap(str[i],str[j]); for(int m=i+1,n=len-1; m

运行结果如下
有重复元素的全排列
文章图片

    推荐阅读