标签:des style blog io color ar os sp for
Description
Input
Output
Sample Input
bf
Sample Output
55
题意:按照题目描述给出的定义:
a->1,b->2……z->26,ab->27……vwxyz->83681.
合法的字符串序列是每一个小写字母比后一个小写字母ASCII码要大,不合法输出0。
思路:首先长度小于len 的话,那么就是计算C[26][{1,2...len-1}],至于等于len 的情况就是讨论str[i-1]+1到str[i]
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
const int maxn = 50;
char str[maxn];
int C[maxn][maxn];
void init() {
C[0][0] = 1;
C[1][0] = C[1][1] = 1;
for (int i = 2; i < 27; i++) {
C[i][i] = C[i][0] = 1;
for (int j = 1; j < i; j++)
C[i][j] = C[i-1][j] + C[i-1][j-1];
}
}
int main() {
init();
while (scanf("%s", str) != EOF) {
int flag = 1;
int len = strlen(str);
for (int i = 1; i < len; i++)
if (str[i] <= str[i-1]) {
flag = 0;
break;
}
if (!flag) {
printf("0\n");
continue;
}
int ans = 0;
for (int i = len-1; i > 0; i--)
ans += C[26][i];
for (int i = 0; i < len; i++) {
char ch = (i == 0) ? 'a' : (str[i-1]+1);
for (int j = ch; j < str[i]; j++)
ans += C['z'-j][len-1-i];
}
printf("%d\n", ans+1);
}
return 0;
}
标签:des style blog io color ar os sp for
原文地址:http://blog.csdn.net/u011345136/article/details/40917767