解题思路:字符排列总数等于:字符总数的全排列数/重复字符次数的阶乘
参考代码:
#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二级辅导-阶乘数列 (C语言代码)浏览:616 |
简单的a+b (C语言代码)浏览:623 |
汽水瓶 (C语言代码)浏览:698 |
C语言程序设计教程(第三版)课后习题8.4 (Java代码)浏览:729 |
Biggest Number (C++代码)回溯法浏览:1613 |
C语言训练-列出最简真分数序列* (C语言代码)浏览:505 |
数列排序 (C语言代码)浏览:830 |
ASCII帮了大忙浏览:749 |
C语言训练-排序问题<1> (C语言代码)浏览:600 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:507 |