描述
有重复元素的排列问题
perm.pas/c/cpp
[问题描述]
对n个元素进行全排列。这n个元素由小写字母组成,这n个元素中的某些可能相同
[输入格式] 1<=n<=500
[输出格式]
每行一个序列,按字典序输出最后一行输出方案数
[输入样例]
aacc
[输出样例]
6
计算排列组合,重复数字排列成不重复组合
#include <stdio.h>
#include <string.h>
using namespace std;
int main()
{
char s[500];
gets(s);
int l;
l=strlen(s);
int t,sum=1;
t=l;
while(t!=0)
{
sum=sum*t;
t--;
}
int k=1,h,i;
for(i=0;i<l;i++)
{
if(s[i]==s[i+1])
{
k++;
}
else
{
h=k;
while(h!=0)
{
sum=sum/h;
h--;
}
k=1;
}
}
printf("%d",sum);
return 0;
}