A40987. 字符排列问题
填空题
较易
知识点
题目描述
字符排列问题
题目描述
有n个字母,列出由该字母组成的字符串的全排列(相同的排列只计一次)。
输入格式
第一行输入是字母个数n,1<=n<=20。接下来一行输入的是待排列的n个字母。
输出格式
计算出的n 个字母的所有不同排列总数
样例输入
4
aacc
样例输出
6
参考答案
#include <stdio.h>
int Factorial(int n){//阶乘函数
int i,x=1;
for(i=1;i<=n;i++){
x*=i;
}
return x;
}
int main()
{
int i=0;
int n=0,m=0;
int p1[52]={0}; //定义一个数组,52是26+26及所有的大小字母
char p[1001]={0};
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%c",&p[i]);
if(p[i]>='A'&&p[i]<='Z'){
p1[p[i]-'A']++;
}
if(p[i]>='a'&&p[i]<='z'){
p1[p[i]-'a'+26]++;
}
}
for(i=0;i<52;i++){//判断出去除重复后的数值m
if(p1[i]>0){
m++;
}
}
printf("%d",Factorial(n)/(Factorial(m)*Factorial(n-m)));//求解Cmn
return 0;
}
上一题
下一题