字符串重排
给定一个只包含大写英文字母的字符串S,要求你给出对S重新排列的所有不相同的排列数。
如:S为ABA,则不同的排列有ABA、AAB、BAA三种。
#include <stdio.h>
#include <string.h>
int f(int a)
{
int i;
int sum=1;
for(i=1;i<=a;i++)
sum*=i;
return sum;
}
int main()
{
char s[11];
gets(s);
int len=strlen(s);
char a[27],b[27];
int i,j;
for(i=0,j=65;i<27;i++,j++)
{
a[i]=j;
b[i]=0;
}
for(i=0;i<=len;i++)
for(j=0;j<27;j++)
if(s[i]==a[j])b[j]++;
int sum;
sum=f(len);
for(j=0;j<27;j++){sum/=f(b[j]);}
printf("%d",sum);
return 0;
}
版权声明:本文为weixin_44879687原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。