指针原来是套娃的


私信TA

用户名:uq_92467646842

访问量:42992

签 名:

数学改变科学,科学改变世界

等  级
排  名 10
经  验 25116
参赛次数 49
文章发表 128
年  龄 0
在职情况 学生
学  校
专  业 物联网工程

  自我简介:

QQ:2830671713

解题思路:

不难发现,答案是一个组合数,及Cmn

n是输入的字符总数,m是去掉重复以后的字符总数


对于组合数求值:

分子是n的阶乘
分母是m的阶乘*(n-m)的阶乘
参考代码:

#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;
}


 

0.0分

160 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答

代码解释器

  评论区

good
2022-08-06 11:49:38
有解题思路,太棒了。
2022-02-11 14:55:16
  • «
  • 1
  • »