计算m个A,n个B可以组合成多少个不同排列的问题。例如计算3个A,2个B可以组成多少种排列?(如:AAABB, AABBA………………)
根据题目,我们要计算出其排列组合的个数,需要先把组合中的各个字母拿出来,并且计算有多少个,然后根据个数,计算其排列组合的数目。
具体实现如下:
#include <stdio.h>
#include<Windows.h>
#pragma warning(disable:4996)
void Print(int n1, int num){
int sum = 1,m=1;
int i = 0;
for ( i = num-n1+1; i <= num; i++){
sum = sum*i;
}
for (i = n1; i > 0; i--){
m = m*i;
}
printf("共有%d种排列方式 \n", sum / m);
}
int main(){
char a[100] ;
char a2[10] = { 0 };
gets(a);
int n = 0;
int num = strlen(a);
a2[0] = a[num-1];
while (num-1){
if ((a2[(strlen(a2))-1])!= a[num-1])
{
a2[strlen(a2)] = a[num-1];
}
if (a[num-1] == a2[0]){
n++;
}
num---1;
}
//printf("%d %s\n", n, a2);
Print(n, strlen(a));
system("pause");
return 0;
}