1.获取字符串排列组合数量
题目描述:
输入:字符串
输出:该字符串中的元素能够排列组合成的最多的数目
例如:输入abc,能够排列abc acb bac bca cab cba六种
输出:6
当然存在多组测试用例。
思路:1.存储字符数组总长度
2.每个字符出现的次数
3.字符串能够排列的组合数量=字符数量阶乘 / 每一个字母数量阶乘
如:abc能够排列的组合=3!/1!/1!/1!=6
#include<stdio.h>
#include<string.h>
int jieceng(int n)
{
int result=1;
while (n)
{
result *= n;
n--;
}
return result;
}
int main()
{
char str[100];
int len;
scanf("%s", str);
len = strlen(str);
int arr[26] = { 0 };//存储字母
int i;
int ID;
for (i = 0; i < len; i++)
{
ID = str[i] - 'a';
arr[ID]++;
}
int m=1;
for (i = 0; i < len; i++)
{
if (arr[i] > 0)
{
m = m * jieceng(arr[i]);
}
}
int result;
result = jieceng(len) / m;
printf("%d\n", result);
}
2.删除字母求字典序最小的字符串
删除字母求字典序最小的字符串。
输入 第一行代表字符串,第二行 k 代表要删

最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



