#include<iostream>
#include<stdio.h>
#include<string.h>
#include<cstring>
#include<algorithm>
using namespace std;
char s[30];
int yanghui[33][33];/// 记录杨辉三角
int combination(int a,int b){/// 组合数
return yanghui[a][b];
}
void run(){
int length=strlen(s+1);/// 从s[1]开始测量长度
int ans=0;
for(int i=1;i<length;i++){
ans+=combination(26,i);
}/// 小数位的都算完
/// 如abc 那么就把一位和两位的都算出来
ans+=1;/// 加上自身的序号
for(int i=1;s[i]!='\0';i++){
if(s[i]-s[i-1]==1){/// 如果串上的书是连续的 不处理
continue;
}
for(int k=1;s[i-1]+k!=s[i];k++){///对中间跳过去的都算出来 再加进去
ans+=combination('z'-(s[i-1]+k),length-i);
}
}
cout<<ans<<endl;
}
int main(){
yanghui[1][0]=1;
yanghui[1][1]=1;
for(int i=2;i<=33;i++){
for(int j=0;j<=i;j++){
if(j==0)yanghui[i][j]=1;
else yanghui[i][j]=yanghui[i-1][j]+yanghui[i-1][j-1];
}
}
while(scanf("%s",s+1)!=EOF){
s[0]='a'-1;/// 让s[0]为'a'-1为了一会儿容易处理
int no=0;
for(int i=1;s[i]!='\0';i++){
if(s[i-1]>s[i]){cout<<0<<endl;
no=1;
break;
}
}
if(no){
continue;
}
run();
}
return 0;
}
POJ1496 – Word Index
猜你喜欢
转载自blog.csdn.net/qq_40675883/article/details/82918070
今日推荐
周排行