【正经题解】单词编码
2024-03-15 10:38:21
发布于:浙江
34阅读
0回复
0点赞
#include<bits/stdc++.h>
using namespace std;
string s;
int ans, n;
// 计算组合数
int combination(int m, int n) {
if (m == 0) return 1;
int mut = 1;
for (int i = n; i > n - m; i--) mut *= i;
for (int i = m; i > 1; i--) mut /= i;
return mut;
}
int main() {
cin >> s;
n = s.size();
// 检查单词是否按字母升序排列
for (int i = 1; i < n; i++)
if (s[i] <= s[i - 1]) {
cout << 0;
exit(0);
}
// 计算编码
for (int i = 1; i < n; i++) ans += combination(i, 26);
for (int i = 0; i < n; i++)
for (char j = (i == 0 ? 'a' : s[i - 1] + 1); j < s[i]; j++)
ans += combination(n - i - 1, 'z' - j);
cout << ++ans;
return 0;
}
这里空空如也
有帮助,赞一个