解题思路:字符排列总数等于:字符总数的全排列数/重复字符次数的阶乘
参考代码:
#include <stdio.h> #include <string.h> int main() { char str[255]; //保存输入字符串 int a[26]={0},A[26]={0};//a[]记录小写字符的重复的次数, int n,i,j; //A[]记录大写字符的重复的次数。 int num = 1,m; scanf("%d",&n); //输入字符串的个数 getchar(); //吃掉回车键,不然会占用下一个数组的空间 for(i=0; i<n; i++) { scanf("%c",&str[i]); if(str[i]>='a' && str[i]<='z') { a[str[i]-97]++; } if(str[i]>='A' && str[i]<='Z') { A[str[i]-32]++; } } for(i=1; i<=n; i++) //字符全排列总数 { num *= i; } for(i=0; i<26; i++) { if(a[i] > 1) //小写字母重复排列的总数 { m = 1; for(j=1; j<=a[i]; j++) { m *= j; } num /= m; } if(A[i] > 1) //大写字母重复排列的总数 { m = 1; for(j=1; j<=A[i]; j++) { m *= j; } num /= m; } } printf("%d\n",num); return (0); }
欢迎点评!!!
0.0分
5 人评分
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:805 |
C二级辅导-同因查找 (C语言代码)浏览:555 |
字符串输入输出函数 (Java代码)浏览:1437 |
九宫重排 (C++代码)浏览:2160 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:633 |
C语言程序设计教程(第三版)课后习题6.4 (C语言代码)浏览:738 |
不会做的浏览:872 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:578 |
A+B for Input-Output Practice (IV) (C语言代码)浏览:451 |
printf基础练习2 (C语言代码)浏览:741 |