字符串重排

给定一个只包含大写英文字母的字符串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 版权协议,转载请附上原文出处链接和本声明。
THE END
< <上一篇
下一篇>>