有重复元素的排列问题

来源:互联网 发布:冰川网络收购 编辑:程序博客网 时间:2024/06/07 17:15
题目描述
      设R={ r1, r2 , …, rn}是要进行排列的n个元素。其中元素r1, r2 , …, rn可能相同。试设计一个算法,列出R的所有不同排列。


       给定n 以及待排列的n 个元素。计算出这n 个元素的所有不同排列。


输入
输入数据的第1 行是元素个数n,1≤n≤500。接下来的1 行是待排列的n个元素。


输出
计算出的n个元素的所有不同排列并输出。文件最后1行中的数是排列总数。
样例输入
4
aacc
样例输出
aacc
acac
acca
caac
caca
ccaa

6


#include<stdio.h>#include<string.h>int n,i,s,a[1000],b[1000],r;char c[1000];int  f(int step){int r;if(step==n+1){s++;for(r=1;r<=n;++r)printf("%c",b[r]+96);printf("\n");return 0;}for(r=1;r<=26;++r)if(a[r]>0){b[step]=r;a[r]--;f(step+1);a[r]++;}}int main(){scanf("%d",&n);scanf("%s",c);for(i=0;i<n;i++)a[c[i]-96]++;f(1);printf("%d\n",s);return 0;}


原创粉丝点击