有重复元素的全排列
题目描述
集合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
运行结果如下
文章图片
推荐阅读
- 放屁有这三个特征的,请注意啦!这说明你的身体毒素太多
- 尽力
- 死结。
- 《跨界歌手》:亲情永远比爱情更有泪点
- 时间老了
- 深入理解Go之generate
- 午门传说
- 【译】20个更有效地使用谷歌搜索的技巧
- 七律.岭南骨科康复联谊有感
- 你有婚内虐待行为吗()